浅谈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 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |