InnoDB Insert(插入)操作(下)--mysql技术内幕

接上一篇文章,最后做的那个实验,我是想证明mysql innodb存储引擎,commit操作与flush数据到磁盘之间的关系,当与同事交流之后,他说,你应该把innodb_buffer_size的大小考虑到里面,事实上我是有考虑的,在開始的部分就有做过如果,假如buffer大小为1G,数据大小为2G。那么在进行事务插入操作时,势必是要在commit操作之前。将缓存数据进行写入磁盘的吧。

再者而言,接上篇实验,我分别进行了两组,一组是进行了rollback操作,另外一组是进行了commit,发现,rollback的操作时间远远大于commit操作的。能否够假象为。事实上数据已经落盘,仅仅只是在数据页面上,存在一个事务标识符,实现事务的隔离机制,对于其它session不可见。而此时rollback操作就要把数据一条一条的从磁盘中清除。这个速度肯定会比較缓慢,当然这个删除的机制,我还是不太清楚,是又一次走一边buffer,还是直接消失掉;并且。在进行了rollback操作之后,数据文件大大小并没有改变,能否够假象为。以前分配的物理空间。并没有及时收回。以便下次又一次利用。再说commit操作。它是在极短的时间内完毕的。有可能的原因就是,这个操作仅仅是把磁盘中数据页上的事务标识信息移除掉,就ok了。好吧。秉着严谨的实验态度,再来进行一次实验。

(下班回去再做吧)

innodb_buffer_size= ,确保足够新插入数据的缓冲。

posted @ 2017-07-25 15:11  yxysuanfa  阅读(346)  评论(0编辑  收藏  举报