【发布时间】:2019-07-07 02:27:50
【问题描述】:
我在一个有 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 上也遇到了同样的问题。
这是预期的行为吗?我如何找出这里出了什么问题?
【问题讨论】:
-
这不是 InnoDB?您可能想查看this question。
标签: mysql table-locking