MySQL Online DDL的实现细节介绍
发布时间:2022-03-29 11:21:35 所属栏目: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.变更完成 (编辑:包头站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐