浅谈DDL技术解密(2)
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 (编辑:ASP站长网) |