MySQL线上改表,如何避免锁表影响业务?¶
默认情况下,对MySQL的表执行ALTER TABLE
语句时,MySQL会把表给锁上,导致该表期间所有针对该表的访问都被block(阻塞),此时业务必然是受影响的。对于超大表,ALTER TABLE
语句的执行往往很耗时间,这对线上业务的影响可能不可接受。
通过特殊的参数,无锁改表¶
示例:
ALTER TABLE table_001 ADD colx int, ALGORITHM=INPLACE, LOCK=NONE;
关键在于,给ALTER TABLE
语句的结尾,加上了ALGORITHM=INPLACE, LOCK=NONE
。
注意,MySQL5.7+版本才支持该特性!
本文为kyleblog.cn原创,转载请注明出处:https://www.kyleblog.cn/posts/mysql_no_lock_alter
发布日期:2022-08-21 联系作者