MySQL版本:5.6.23和5.7.17
现象:
MySQL5.6
- alter table add column不阻塞insert,update
- alter table modify column阻塞insert,update(不论是增加还是缩短varchar的长度)
MySQL5.7
- alter table add column不阻塞insert,update
- alter table modify column阻塞insert,update(增加varchar长度不阻塞,缩短长度会阻塞)
MySQL5.7缩短字段长度
原因:修改字符串长度(5.6无论改长还是改短)需要拷贝数据且锁全表。
网上相同的案例:https://blog.51cto.com/suifu/1855872
在DDL之前,一定要先执行show processlist命令并观察,,此刻是否有某个慢SQL对该表进行操作,以免alter table表时出现锁表现象。