我在 InnoDB 表上使用 LOAD DATA INFILE ,并且在 SHOW PROCESSLIST 中看到“系统锁定”状态。在这种情况下,InnoDB 锁究竟是什么锁?如何查看被锁定的内容?

最佳答案

您的问题有两个部分:LOAD DATA INFILE 在 InnoDB 中实际锁定了什么,以及如何检查锁定。
LOAD DATA INFILE 命令基本上只是一种更有效的多行 INSERT 方法,它会锁定与 INSERT 完全相同的东西。在处理 LOAD DATA INFILE 时,对于要加载到的表中的每个索引,要加载的行中的键被排他行锁锁定。

LOAD DATA INFILE 正在运行时,您将能够通过 SHOW ENGINE INNODB STATUS 看到有关其锁定的一些总体统计信息。如果您启用 InnoDB lock monitor,您可以看到有关所采取的每个单独锁的更多详细信息(最多一点)。

关于locking - mysql 会在 innodb 上为 'load data infile' 发出什么锁?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21994775/

10-13 00:53