mysql5.6在线DDL-创新互联

online ddl主要包括3个阶段,prepare阶段,ddl执行阶段,commit阶段,rebuild方式比no-rebuild方式实质多了一个ddl执行阶段,prepare阶段和commit阶段类似。下面将主要介绍ddl执行过程中三个阶段的流程。

下冶网站制作公司哪家好,找成都创新互联公司!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。成都创新互联公司于2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联公司
  • Prepare阶段:

  1. 创建新的临时frm文件(与InnoDB无关)

  2. 持有EXCLUSIVE-MDL锁,禁止读写

  3. 根据alter类型,确定执行方式(copy,online-rebuild,online-norebuild)
    假如是Add Index,则选择online-norebuild即INPLACE方式

  4. 更新数据字典的内存对象

  5. 分配row_log对象记录增量(仅rebuild类型需要)

  6. 生成新的临时ibd文件(仅rebuild类型需要)

ddl执行阶段:

  1. 降级EXCLUSIVE-MDL锁,允许读写

  2. 扫描old_table的聚集索引每一条记录rec

  3. 遍历新表的聚集索引和二级索引,逐一处理

  4. 根据rec构造对应的索引项

  5. 将构造索引项插入sort_buffer块排序

  6. 将sort_buffer块更新到新的索引上

  7. 记录ddl执行过程中产生的增量(仅rebuild类型需要)

  8. 重放row_log中的操作到新索引上(no-rebuild数据是在原表上更新的)

  9. 重放row_log间产生dml操作append到row_log最后一个Block

  • commit阶段:

  1. 当前Block为row_log最后一个时,禁止读写,升级到EXCLUSIVE-MDL锁

  2. 重做row_log中最后一部分增量

  3. 更新innodb的数据字典表

  4. 提交事务(刷事务的redo日志)

  5. 修改统计信息

  6. rename临时idb文件,frm文件

  7. 变更完成

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


标题名称:mysql5.6在线DDL-创新互联
当前路径:http://pwwzsj.com/article/desoij.html