Mysql Alter表的时序取决于是否存在外键

时间:2013-04-01 23:24:26

标签: mysql indexing foreign-keys alter

我们有一个表A和B的情况,其中A有几千行(约50k),B有几百万行(约5M)。表B有一列指向表A的主键。我们需要向表A添加一个列,并担心当alter语句运行时,它可能在表B上有一个读锁定。

我的第一个问题是,是真的,表B在改变表A时会被锁定吗?如果是,最好先将外键从B放到A然后再运行alter语句,然后重新创建外键。

我们正在使用MySQL 5.5,InnoDB和每个表的单独文件。

1 个答案:

答案 0 :(得分:0)

你试过这个吗?

set foreign_key_checks = 0;
ALTER TABLE ...;
set foreign_key_checks = 1;

如果永久删除,可以删除外键。但暂时删除外键约束然后在ALTER语句之后再次添加它将是一个开销。