MySQL中DDL对DML的影响

改表时我们总是有些忐忑,担心对线上业务的影响。因此我们常使用pt-online-schema-change等工具进行在线改表,但这些工具改表往往涉及到数据的拷贝,改表很慢,所以我们想能不能直接改表呢,到底会有哪些影响呢?

https://dev.mysql.com/doc/refman/5.6/en/innodb-online-ddl-operations.html

官方文档做了详细的说明,与我们想的不同,其实很多操作是不会阻塞表的读写的,比如加二级索引,加列等。但别高兴得太早,即使这些DDL不会阻塞读写,我们仍然不能直接改表,why?因为我们还得考虑主从延迟!

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

MySQL 官方这篇文章中介绍到,一个DDL操作必须在主库上执行完毕才会开始在从库上执行,在主库上DDL操作进行时,是可以并发执行DML操作的,然而这些DML操作在从库上则必须等待DDL操作完毕才能开始开始执行,因此,DDL操作一定会造成主从延迟。

猜你喜欢

转载自blog.csdn.net/xiaocszn/article/details/83346564