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的两个坑的主要内容,如果未能解决你的问题,请参考以下文章