MySQL Online DDL的实现细节介绍
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,MySQL Online DDL的实现细节共分为三个阶段:Prepare阶段1.创建临时frm文件2.持有EXCLUSIVE-MDL锁,禁止读写3.根据ALTER类型,确定执行方式(copy,onli
千家信息网最后更新 2026年11月01日MySQL Online DDL的实现细节介绍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.变更完成
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.变更完成
索引
文件
阶段
事务
增量
字典
对象
数据
日志
类型
中产
处理
更新
细节
三个
信息
内存
方式
过程
分配
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡
有格互联网科技
互联网最新的科技
互联网与科技发展
深圳互联网科技公司
美国互联网科技
远拓互联网科技
汇久创客互联网科技
易通互联网络科技有限公司
互联网科技logo设计
撒么互联网科技公司
互联网科技公司招聘
广州慧亚互联网科技怎么样
现代互联网科技股
佳云科技和互联网广告
昊天互联网科技有限公司
乌鲁木齐新华智原互联网科技学校
浙南科技城互联网大厦招聘
上海互联网科技公司ppt
广州三三互联网科技有限公司
凡科互联网科技
上海万想互联网科技
互联网高科技企业
亿人帮互联网科技
镁科技互联网资讯平台
青岛科技大学互联网大赛研究生
怎样加入科技互联网
互联网领先科技宣传片
黑龙江互联网科技公司
科技美学互联网 艺术