我ALTER在一个有6000万行的大表上的MySQL 5.6数据库上运行以下命令:
ALTER TABLE `large_table` ADD COLUMN `note` longtext NULL,
ALGORITHM=INPLACE, LOCK=NONE;
Run Code Online (Sandbox Code Playgroud)
尽管同时指定ALGORITHM=INPLACE和LOCK=NONE,表被锁定,并且基本上是删除了应用,直到迁移完成.
我通过检查命令In_use输出中列的值来验证表确实已锁定SHOW OPEN TABLES.它被设定为1.
根据我在MySQL文档中收集的内容,此操作不应该锁定表.并且,如果没有锁定,MySQL无法继续执行命令.我将数据库升级到MySQL 5.7以查看它是否更好,但我在5.7上也遇到了同样的问题.
这是预期的行为吗?我怎么知道这里出了什么问题?