我正在一个有6000万行记录的MySQL 5.6数据库中运行以下ALTER
命令:
ALTER TABLE `large_table` ADD COLUMN `note` longtext NULL,
ALGORITHM=INPLACE, LOCK=NONE;
尽管指定了ALGORITHM = INPLACE
和LOCK = NONE
,但该表仍然被锁定,并且基本上会使应用程序停止,直到迁移完成。
通过检查SHOW OPEN TABLES
命令输出的In_use
列的值,我验证了该表确实被锁定。它的值设置为1
。
根据我在MySQL文档中了解到的情况,此操作不应锁定表。而且,如果无法在没有锁定的情况下进行操作,MySQL应该失败该命令。我将数据库升级到MySQL 5.7以查看是否有所改善,但在5.7上也遇到了同样的问题。
这是一种预期的行为吗?我该如何找出问题出在哪里?