mysql给表增加字段会锁表,怎样才可以不锁表吗?

关注者
18
被浏览
5655
MySQL在线表修改操作是一个历史问题了,再5.6和5.7上有非常多的改进,很多情况下都不用锁表了。如果你实在不想升级MySQL到新版本的话,建议使用percona的工具集(MySQL Tools & Management Software to Perform System Tasks by Percona)中的在线表结构修改pt-online-schema-change,不锁表来修改表结构。其实原理也很简单,新建和原表表结构一模一样的表A',对这个表进行表结构修改,然后把表结构变更期间对该表的insert,update,delete重新应用上去,最后两个表A和A'对调。
当然,就算你是在线表结构修改,还是建议你在业务低峰期修改,避免一些问题。
淘宝因为发现了pt-online-schema-change的部分bug,维护了自己的一套在线表结构变更的工具,但是原理是完全一致的。