用到的表如下以及环境:
操作如下表:
问题:
1.会话B中mysql> select * from t where a<=3 lock in share mode; 为什么会出现等待?
2.假如会话B中使用(已经测试):
mysql> select * from t where a=1 lock in share mode;
mysql> select * from t where a=2 lock in share mode;
却可以正常加锁,这是为什么?
3.为什么会话再插入3时,会出现死锁?
操作如下表:
问题:
1.会话B中mysql> select * from t where a<=3 lock in share mode; 为什么会出现等待?
2.假如会话B中使用(已经测试):
mysql> select * from t where a=1 lock in share mode;
mysql> select * from t where a=2 lock in share mode;
却可以正常加锁,这是为什么?
3.为什么会话再插入3时,会出现死锁?
解决方案
40
3是范围锁,=4ujif意味着 2-5的区间锁定,不包含2/5自身,3在这个区间,所以等待,insert 3 也失败也是这个范围的原因