浅谈DDL技术解密
Online DDL 实现过程主要包括三个阶段:Initialization 阶段, Execution 阶段,Commit Table Definition 阶段。我们看下官方给出的内容(MySQL 8.0): (引自:https://dev.mysql.com/doc/refman/8.0/en/innodb-online-ddl-performance.html) 我们详细描述下这三个过程的过程: (1) Initialization
(2) Execution(如果仅修改 MetaData,则无此部操作)
(3) Commit Table Definition
我理解,Online DDL 中的 COPY 和 INPLACE 的区别在于有没有原地,COPY 会将数据从 InnoDB 存储层 copy 到 Server 层,而 INPLACE 不会;而 INPLACE 中的 Rebuilds 和 No-Rebuils 的区别在于,有没有重建表。 PT-Online-Schema-Change(PT-OSC) 全称 Percona Toolkit Online Schema Change,其中 Percona Toolkit 源自 Maatkit 和 Aspersa 工具,这两个工具是管理 MySQL 最有名的工具,但 Maatkit 已经不维护了,全部归并到 Percona Toolkit。Percona Toolkit 是一组高级的命令行工具,用来管理 MySQL 和系统任务。 PT-OSC(pt-online-schema-change)工具特点与优势是支持并发 DML 操作。 GitHub’s Online Schema Transformer(GH-OST) GH-OST 是 GitHub 的在线表定义转换器,与 PT-OSC 的最大区别,在于 GH-OOST 的无触发器设计。 至此,我们对比下 Online DDL、PT-OSC 和 GH-OST 的优缺点: (引自:吴夏《在线DDL原理、对比分析和实践》) 总结 传统的 DDL,多数的 ALTER TABLE 操作是通过创建一个满足需求的新表,之后拷贝数据到新表,在用新表替换老表,整个过程会加锁,不支持并发 DML。在 MySQL 5.5 版本中,以 InnoDB Plugin 方式,优化了新增和删除索引的操作,避免了这种数据 copy 的开销,出现了 FIC。在 MySQL 5.6 开始增强了对各种 ALTER TABLE 操作支持,避免数据 copy 的开销,同时允许在 DDL 进行中,并发执行 DML 操作。在 MySQL 5.7 实现了 ALTER TABLE RENAME INDEX 操作,即支持在线的索引重命名,这种特性的综合,即 ONLINE DDL。PT-OST 通过改造原生 DDL 的方式,实现不锁表的在线修改表结构。 【本文是51CTO专栏作者张开涛的原创文章,作者微信公众号:开涛的博客,id:kaitao-1234567】 戳这里,看该作者更多好文 【编辑推荐】
点赞 0 (编辑:帝国网站管理系统) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何测试JDBC驱动程序是否正确安装以及是否可以连接数据库?
- ClassCastException:java.math.BigInteger在连接MySQL时无
- 逃离Oracle的围城,焕发云数据库的新生
- mysql – SQL:如何根据第三个字段选择两个字段中的一个
- MySQL,VS2010 Pro,ASP .NET MVC3的连接字符串
- 到底选择PostgreSOL还是MySQL?看这里
- Mysql学习MySQL存储引擎中MyISAM和InnoDB区别详解
- SQL Server获取所有数据库名、表名以及字段名
- 记一个 MySQL设计不合理地方:应用程序错误密码不断重连校验
- 详解MySQL高可用方案:MySQL MHA架构、原理、应用场景等