MySQL Online DDL的实现细节介绍
发布时间:2022-03-29 11:06:01 所属栏目:MySql教程 来源:互联网
导读:MySQL Online DDL的实现细节共分为三个阶段: Prepare阶段 1.创建临时frm文件 2.持有EXCLUSIVE-MDL锁,禁止读写 3.根据ALTER类型,确定执行方式(copy,online-rebuild,online-norebuild) 4.更新数据字典的内存对象 5.分配row_log对象记录增量 6.生成临时ibd文
MySQL Online DDL的实现细节共分为三个阶段: Prepare阶段 1.创建临时frm文件 2.持有EXCLUSIVE-MDL锁,禁止读写 3.根据ALTER类型,确定执行方式(copy,online-rebuild,online-norebuild) 4.更新数据字典的内存对象 5.分配row_log对象记录增量 6.生成临时ibd文件 ddl执行阶段 1.降级EXCLUSIVE-MDL锁,允许读写 2.扫描原表的聚簇索引每条记录 3.遍历新表的聚簇索引和二级索引,逐一处理 4.根据记录构造对应的索引项 5.将构造索引项插入sort_buffer块 6.将sort_buffer块插入新的索引 7.处理ddl执行过程中产生的增量(仅rebuild类型需要) commit阶段 1.升级到EXCLUSIVE-MDL锁,禁止读写 2.应用最后row_log中产的日志 3.更新innodb的数据字典表 4.提交事务(刷事务的redo日志) 5.修改统计信息 6.rename临时idb文件,frm文件 7.变更完成 (编辑:ASP站长) 【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。 |
相关内容
未处理完善
-
无相关信息
最新更新