MySQL Online DDL的实现细节介绍
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,MySQL Online DDL的实现细节共分为三个阶段:Prepare阶段1.创建临时frm文件2.持有EXCLUSIVE-MDL锁,禁止读写3.根据ALTER类型,确定执行方式(copy,onli
千家信息网最后更新 2025年01月21日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安全错误
数据库的锁怎样保障安全
淘宝买数据库代做
JAVA MC免费服务器
山西职业软件开发价格
拾染网络技术
我的世界服务器收费吗
软件开发好还是服务外包好
网络安全安全培训计划及内容
湖北正规软件开发哪家便宜
软件开发多久可以转正
大数据里的网络安全
数据库和应用放一台服务器
如何改网络安全密钥
甘肃电视台公共应急台网络安全
sql数据库怎么创建序列
自考互联网数据库答案
达梦数据库序列查询语句
思科网络技术pdf
工业网络技术基础课件
莱州ios软件开发
戴尔服务器无法识别PCI设备
名人对网络安全的研究
网络安全宣讲宣传
天津银行软件开发
林芝手机软件开发
高校网络安全年度总结
数据库开发的工作环境
网络安全招聘昆明
知乎电子科技大学互联网
为什么要软件开发
php 修改数据库