我在 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/