作为一名DBA,对数据库进行DDL操作非常多,如添加索引,添加字段等等。对于MySQL数据库,DDL支持的并不是很好,一不留心就导致了全表被锁,经常搞得刚入门小伙伴很郁闷又无辜,不是说MySQL支持Online DDL么,不是说不会锁表的么?是的,令人高兴的是从MySQL5.6开始就支持部分DDL Online操作了,但并不是全部喔,今天这里就对我们常用的DDL进行总结和说明,让操作DDL的小伙伴从此做到心中有数,得心应手,让老板们再也不用担心我们做DDL咯。
我自己遵守的一条黄金准则:DDL永远不要在业务高峰期间执行。
环境说明:本次的测试服务器配置如下
CPU:32 cores MEM:128G DISK: SSD(固态硬盘) MySQL版本:5.6.27以上
一、MySQL执行DDL原理
MySQL各版本,对于DDL的处理方式是不同的,主要有三种:
Copy Table方式: 这是InnoDB最早支持的方式。顾名思义,通过临时表拷贝的方式实现的。新建一个带有新结构的临时表,将原表数据全
