MySQL online DDL的两个坑

Posted _雪辉_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL online DDL的两个坑相关的知识,希望对你有一定的参考价值。

  • 在外键关联中的表上的在线 DDL 操作不会等待在外键关联中的另一个表上执行的事务提交或回滚。事务在它正在更新的表上持有独占元数据锁,并在外键相关表上共享元数据锁(外键检查需要)。当需要独占元数据锁来更新表定义时,共享元数据锁允许在线 DDL 操作继续进行,但会在其最后阶段阻止操作。这种情况可能会导致死锁,因为其他事务等待在线 DDL 操作完成。

  • 运行DDL操作时,运行ALTER TABLE语句的线程会应用在同一表上并发运行的 DML 操作的在线日志,这些操作来自其他连接线程。应用 DML 操作时,可能会遇到重复键条目错误(ERROR 1062 (23000): Duplicate entry),即使重复条目只是临时的,并且会被在线日志中的后续条目还原。这类似于InnoDB在事务期间必须保持约束的外键约束检查的想法。

https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-limitations.html

以上是关于MySQL online DDL的两个坑的主要内容,如果未能解决你的问题,请参考以下文章

mysql5.7 online ddl怎么查看进度

关于mysql 5.6 哪些操作可以进行online ddl 详解

mysql 5.6 online ddl

MySQL5.6 Online DDL

MySQL online DDL

MySQL--Online DDL