在生产环境中,可能经常要做的且教烦的一个事情就是做DDL操作。最常见的就是增加字段、修改字段类型了。增加字段就不说了,从MySQL 5.6开始就支持Online DDL了。但改变字段类型,比如从CHAR变为VARCHAR;修改字段类型,比如增加VARCHAR大小,这些在MySQL 5.7之前还是会锁表的。从MySQL 5.7开始就支持了对于tinyint、int、smallint、bigint等数值类型的数据类型,自身位大小的增大或减小是支持ONLINE的(注意:不支持从tinyint变更为int)。还支持了VARCHAR类型的在线增大,但也有些限制。
支持了对于tinyint、int、smallint、bigint等数值类型的数据类型,自身位大小的增大或减小是支持ONLINE的(注意:不支持从tinyint变更为int),如下:
mysql> alter table t1 change id id bigint(10),ALGORITHM=INPLACE,LOCK=NONE;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> alter table t1 change id id bigint(30),ALGORITHM=INPLACE,LOCK=NONE;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
1
2
3
4
5
6
7
mysql>altertablet1changeididbig