暂无图片
rc下,单独执行每个只有1个行锁,为啥2个会话会发生锁等待?
我来答
分享
暂无图片 匿名用户
rc下,单独执行每个只有1个行锁,为啥2个会话会发生锁等待?

比如表t create table t(id int ,b int) ,没有任何索引



insert into t values(100,1) ,(200,2),(300,3)

rc 下面
begin;
select * from t where b=2 for update ; ---sess 1  ,单独查看锁,只有1个行锁
begin;
select * from t where b=3 for update ; ---sess 2, 单独查看锁,只有1个行锁

2个行锁不同,一个是2  一个是3

为什么会发生阻塞呢?

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

因为没有索引,RC是扫描后放弃掉不符合要求退化为行锁。当还没有退化的时候,就已拿不到锁了。所以就会堵塞。

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