Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在InnoDB中,为什么不在索引范围内的行被锁定?_Mysql_Innodb - Fatal编程技术网

Mysql 在InnoDB中,为什么不在索引范围内的行被锁定?

Mysql 在InnoDB中,为什么不在索引范围内的行被锁定?,mysql,innodb,Mysql,Innodb,考虑下面的查询 从Employee中选择*,其中ID>0,ID为0,ID从MySQL 8.0.1开始,您实际上可以看到innodb中的所有数据锁,它们由性能模式检测: SELECT * from performance_schema.data_locks; 看 可能与8.0.1发行说明相关: InnoDB:在使用读取提交隔离级别时,在外键验证期间不必要地使用了间隙锁。错误25082593 因此,即使MySQL不应该使用间隙锁,仍然值得使用性能模式检查实际使用的锁。您是否尝试解释该查询?它被称为

考虑下面的查询


从Employee中选择*,其中ID>0,ID为0,ID从MySQL 8.0.1开始,您实际上可以看到innodb中的所有数据锁,它们由性能模式检测:

SELECT * from performance_schema.data_locks;

可能与8.0.1发行说明相关:

InnoDB:在使用读取提交隔离级别时,在外键验证期间不必要地使用了间隙锁。错误25082593


因此,即使MySQL不应该使用间隙锁,仍然值得使用性能模式检查实际使用的锁。

您是否尝试解释该查询?它被称为间隙锁。请提供1个SELECT*from INFORMATION_SCHEMA.INNODB_LOCKS和2个SELECT*from INFORMATION_SCHEMA.INNODB_LOCK_WAIT的输出。我已添加INNODB_LOCK和INNODB_LOCK_WAIT输出。请查收。谢谢提供详细信息。这将确认在ID=6时发生争用,请参阅lock_数据。是select*from Employee,其中ID>0,ID@user2641906应该没有间隙锁,是的。您对此是否有PK/FK?列ID为PK,表中没有FK。
select * from Employee where (ID>0 and ID<5);
Empty set (0.00 sec)
---TRANSACTION B3D2D, ACTIVE 2109 sec
2 lock struct(s), heap size 376, 1 row lock(s)
MySQL thread id 894932, OS thread handle 0x7f53263e0700, query id 4140397 localhost root
    +----------------+-------------+-----------+-----------+----------------------+------------+------------+-----------+----------+-----------+
| lock_id        | lock_trx_id | lock_mode | lock_type | lock_table           | lock_index | lock_space | lock_page | lock_rec | lock_data |
+----------------+-------------+-----------+-----------+----------------------+------------+------------+-----------+----------+-----------+
| B42F4:1822:3:7 | B42F4       | X         | RECORD    | `jbossdb`.`Employee` | `PRIMARY`  |       1822 |         3 |        7 | 6         |
| B42ED:1822:3:7 | B42ED       | X         | RECORD    | `jbossdb`.`Employee` | `PRIMARY`  |       1822 |         3 |        7 | 6         |
+----------------+-------------+-----------+-----------+----------------------+------------+------------+-----------+----------+-----------+
+-------------------+-------------------+-----------------+------------------+
| requesting_trx_id | requested_lock_id | blocking_trx_id | blocking_lock_id |
+-------------------+-------------------+-----------------+------------------+
| B42F4             | B42F4:1822:3:7    | B42ED           | B42ED:1822:3:7   |
+-------------------+-------------------+-----------------+------------------+
SELECT * from performance_schema.data_locks;