关闭

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

765人阅读 评论(0) 收藏 举报
分类:

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

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

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

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:31345次
    • 积分:712
    • 等级:
    • 排名:千里之外
    • 原创:39篇
    • 转载:3篇
    • 译文:2篇
    • 评论:4条
    最新评论