注册 登录
  • 欢迎访问"运维那点事",推荐使用Google浏览器访问,可以扫码关注本站的"微信公众号"。
  • 如果您觉得本站对你有帮助,那么可以扫码捐助以帮助本站更好地发展。

MySQL一条insert语句的执行过程

MySQL 彭东稳 4942次浏览 已收录 0个评论

本文只分析了insert语句执行的主路径,和路径上部分关键函数,很多细节没有深入,留给读者继续分析

create table t1(id int);

insert into t1 values(1)

略过建立连接,从 mysql_parse() 开始分析

进入mysql_execute_command()

进入 mysql_insert()

进入 write_record

进入ha_write_row、write_row

进入引擎层,这里是innodb引擎,handler对应ha_innobase

插入的表信息保存在handler中

InnoDB表是基于B+树的索引组织表

如果InnoDB表没有主键和唯一键,需要分配隐含的row_id组织聚集索引

row_id分配逻辑在row_ins中,这里不详细展开

插入单个索引项

row_ins_clust_index_entry 和 row_ins_sec_index_entry 函数结构类似,只分析插入聚集索引

row_ins_clust_index_entry_low 和 row_ins_sec_index_entry_low 函数结构类似,只分析插入聚集索引

btr_cur_optimistic_insert 和 btr_cur_pessimistic_insert 涉及B+树的操作,内部细节很多,以后再做分析。

原文:MySQL · 源码分析 · 一条insert语句的执行过程

八怪:MySQL:一个简单insert语句的大概流程


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (4)or分享 (0)
关于作者:

您必须 登录 才能发表评论!