广告
返回顶部
首页 > 资讯 > 数据库 >mysql 5.6 在线DDL
  • 347
分享到

mysql 5.6 在线DDL

2024-04-02 19:04:59 347人浏览 安东尼
摘要

online ddl主要包括3个阶段,prepare阶段,ddl执行阶段,commit阶段,rebuild方式比no-rebuild方式实质多了一个ddl执行阶段,prepare阶段和commit阶段类似。

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

  • 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. 变更完成


您可能感兴趣的文档:

--结束END--

本文标题: mysql 5.6 在线DDL

本文链接: https://www.lsjlt.com/news/34904.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql 5.6 在线DDL
    online ddl主要包括3个阶段,prepare阶段,ddl执行阶段,commit阶段,rebuild方式比no-rebuild方式实质多了一个ddl执行阶段,prepare阶段和commit阶段类似。...
    99+
    2022-10-18
  • MySQL 在线DDL "gh-ost"
    大表的DDL的变更大部分都是使用Percona的pt-online-schema-change,本文说明下另一种工具gh-ost的使用:不依赖于触发器,是因为他是通过模拟从库,在row binlog中获取...
    99+
    2022-10-18
  • pt-online-change-ddl(在线ddl)
    mysql> desc online_ddl;+---------+--------------+------+-----+-------------------+----------------+|...
    99+
    2022-10-18
  • MySQL 5.6中怎么定位DDL被阻塞的问题
    这篇文章将为大家详细讲解有关MySQL 5.6中怎么定位DDL被阻塞的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。对于DDL被阻塞问题的定位,我们主要是基于MySQ...
    99+
    2022-10-18
  • MySQL在线DDL工具 gh-ost的原理解析
    目录一.简介1.1 原理1.2 过程1.3 特性1.4 github地址二.测试环境:2.1 测试服务器2.2 安装2.3 创建用户2.4 命令参数三. 操作模式四.gh-ost与p...
    99+
    2022-11-11
  • MySQL-5.6 基于GTID及多线程的复制
    MySQL 5.6引入的GTID(Global Transaction IDs)使得其复制功能的配置、监控及管理变得更加易于实现,且更加健壮。要在MySQL 5.6中使用复制功能,其服务配置段[mysqld...
    99+
    2022-10-18
  • MySQL5.6、5.7、8.0在线DDL对比情况
    MySQL5.6的版本之后支持了在线DDL,这对于DBA来说是个福音,但是MySQL5.6、5.7和当前的最新版本8.0在各种DDL中的情况不太一样,根据MySQL官方网站的说明整理一份在线DDL的对比情况...
    99+
    2022-10-18
  • MySQL 5.6执行DDL报错ERROR 1050 (42S01): Table 'sms/#sql-ib752' already exist怎么办
    这篇文章主要介绍MySQL 5.6执行DDL报错ERROR 1050 (42S01): Table 'sms/#sql-ib752' already exist怎么办,文中介绍的非常详细,具...
    99+
    2022-10-18
  • 如何在Mysql中使用Online DDL
    本篇文章为大家展示了如何在Mysql中使用Online DDL,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。LOCK参数LOCK=NONE:允许并发的查询和DML操作LOCK=SHARED:允许并发...
    99+
    2023-06-15
  • MySQL5.6在线表结构变更(online ddl)总结
      MySQL从5.6.17以后,支持在线修改表结构操作(online ddl),即在变更表结构的过程中,不阻塞dml和dql操作.  根据操作过程中是否需要表拷贝,onlin...
    99+
    2022-10-18
  • MySQL5.7新特性之在线DDL不会锁表
          MySQL5.7在线修改varchar字段不在锁表,测试过程如下: 点击(此处)折叠或打开 ...
    99+
    2022-10-18
  • MySQL5.6 Online DDL在线状态是怎么样的
    这篇文章将为大家详细讲解有关MySQL5.6 Online DDL在线状态是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 Yes*和No*表明结...
    99+
    2022-10-19
  • 通过DDL语句工具在线生成ER模型
    下文主要给大家带来通过DDL语句工具在线生成ER模型,希望这些内容能够带给大家实际用处,这也是我编辑通过DDL语句工具在线生成ER模型这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。Freedgo(...
    99+
    2022-10-18
  • 如何在centos7.4系统中使用yum源安装mysql 5.6
    如何在centos7.4系统中使用yum源安装mysql 5.6?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。系统环境:centos7.4一,...
    99+
    2022-10-18
  • 外键DDL在Oracle运行正常,在mysql报异常如何解决
    这篇文章将为大家详细讲解有关外键DDL在Oracle运行正常,在mysql报异常如何解决,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。记一个Mysql外键约束设计缺陷背景...
    99+
    2022-10-18
  • 如何在不兼容的DDL命令后修复MySQL复制
    MySQL支持复制到一个更高版本的slave,这允许我们通过升级从机和指向应用程序来轻松地将MySQL设置升级到一个新版本。但如果不支持或者是应用程序在旧版本的MySQL上表现得更好,我们就需要通过降级来...
    99+
    2022-10-18
  • mysql在线编辑器
    mysql 能否设置DDL语句 可以回滚? MySQL8.0开始支持原⼦DDL(atomicDDL),数据字典的更新,存储引擎操作,写⼆进制日志结合成了一个事务。在没有原⼦DDL之前,DROPTABLEtest1,test2;...
    99+
    2023-09-03
    mysql 数据库 大数据 java php
  • 技术分享 | 如何优雅地在 Windows 上从 MySQL 5.6 升级到 5.7
    作者:赵黎明 爱可生 MySQL DBA 团队成员,Oracle 10g OCM,MySQL 5.7 OCP,擅长数据库性能问题诊断、事务与锁问题的分析等,负责处理客户 MySQL 及我司自研 DMP 平台日常运维中的问题,对开源数据库相...
    99+
    2014-11-12
    技术分享 | 如何优雅地在 Windows 上从 MySQL 5.6 升级到 5.7
  • 如何在线安装Mysql
    这篇文章主要为大家展示了“如何在线安装Mysql”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何在线安装Mysql”这篇文章吧。 ...
    99+
    2022-10-18
  • 生产mysql在线配置主从
    一、将主库数据导出 mysqldump -uuser -ppassword  -S /tmp/mysql.sock --single-transaction --master-data=2 --...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作