您的位置:首页 > 其它

innodb如何处理对innodb行记录的update

2011-12-29 17:38 288 查看
今天有同事提到一篇博客:http://blogs.innodb.com/wp/2010/09/mysql-5-5-innodb-change-buffering/

里面提到:

当更新非聚集索引上记录 和 聚集索引上的主键时,是标记删除,然后插入新的记录

当更新聚集索引上的非主键列时,是updated-in-place,也就是说原地修改,不会插入新记录。

之前一直以为都是以标记删除作处理的,翻了下代码。找到两个函数:

btr_cur_del_mark_set_sec_rec 对非聚集索引上的记录进行标记删除

btr_cur_del_mark_set_clust_rec 对聚集索引上的记录进行标记删除

证明的过程很简单,就是设置两个断点,然后更新不同的索引列来证明,过程不多说了,结果和那篇博客里提到的很吻合。

一直认为正确的观点其实是错误的,得出一个结论:任何真理都可以从代码里求证……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: