暂无图片
8.0下的rr 隔离下的锁问题
我来答
分享
暂无图片 匿名用户
8.0下的rr 隔离下的锁问题

8.0下的rr 隔离下的锁问题

mysql> create table yue(
-> a int default null,
-> b int default null,
-> c int default null,
-> unique key idx_a(a),
-> key idx_b(b)

mysql> select * from yue;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 2 | 3 |
| 2 | 3 | 4 |
| 3 | 4 | 5 |
| 4 | 5 | 6 |
| 5 | 6 | 7 |
| 6 | 7 | 8 |
| 7 | 8 | 8 |
| 8 | 9 | 10 |
| 9 | 10 | 10 |
+------+------+------+


会话 1

begin;
select * from yue where b between 2 and 6 for update;

会话3

mysql> select * from performance_schema.data_locks;
+--------+-----------------------------------------+-----------------------+-----------+----------+---------------+-------------+----------------+-------------------+-----------------+-----------------------+-----------+---------------+-------------+-------------------+
| ENGINE | ENGINE_LOCK_ID | ENGINE_TRANSACTION_ID | THREAD_ID | EVENT_ID | OBJECT_SCHEMA | OBJECT_NAME | PARTITION_NAME | SUBPARTITION_NAME | INDEX_NAME | OBJECT_INSTANCE_BEGIN | LOCK_TYPE | LOCK_MODE | LOCK_STATUS | LOCK_DATA |
+--------+-----------------------------------------+-----------------------+-----------+----------+---------------+-------------+----------------+-------------------+-----------------+-----------------------+-----------+---------------+-------------+-------------------+
| INNODB | 140270552234600:1161:140270477832904 | 15510 | 51 | 447 | dba | yue | NULL | NULL | NULL | 140270477832904 | TABLE | IX | GRANTED | NULL |
| INNODB | 140270552234600:104:6:2:140270477829864 | 15510 | 51 | 447 | dba | yue | NULL | NULL | idx_b | 140270477829864 | RECORD | X | GRANTED | 2, 0x000000000509 |
| INNODB | 140270552234600:104:6:3:140270477829864 | 15510 | 51 | 447 | dba | yue | NULL | NULL | idx_b | 140270477829864 | RECORD | X | GRANTED | 3, 0x00000000050A |
| INNODB | 140270552234600:104:6:4:140270477829864 | 15510 | 51 | 447 | dba | yue | NULL | NULL | idx_b | 140270477829864 | RECORD | X | GRANTED | 4, 0x00000000050B |
| INNODB | 140270552234600:104:6:5:140270477829864 | 15510 | 51 | 447 | dba | yue | NULL | NULL | idx_b | 140270477829864 | RECORD | X | GRANTED | 5, 0x00000000050C |
| INNODB | 140270552234600:104:6:6:140270477829864 | 15510 | 51 | 447 | dba | yue | NULL | NULL | idx_b | 140270477829864 | RECORD | X | GRANTED | 6, 0x00000000050D |
| INNODB | 140270552234600:104:6:7:140270477829864 | 15510 | 51 | 447 | dba | yue | NULL | NULL | idx_b | 140270477829864 | RECORD | X | GRANTED | 7, 0x00000000050E |



这里有给记录7 加锁了

为啥再会话2,可以插入insert into yue select 10,7,2 ; 

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
everything

还没人回答吗?
会话 1在idx_b上的锁是next-key锁,锁定范围是
((2,1),(7,6)],在idx_a上的锁是record lock,锁定范围是[1,5];
插入的数据不在锁范围内,可以插入

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏