首页 新闻 会员 周边 捐助

关于sqlserver的序列化级别的事务,发现不是所有时候都锁表,请高手看一下

0
悬赏园豆:5 [已解决问题] 解决于 2016-12-25 15:48

我实验的结果是这样:

两个事务A和B都以序列化级别启动,

1:事务A查询Person表,条件里使用了具有唯一约束的列,然后B向Person表插入一条A查询范围外的,能够插入成功,然后结束事务。

2:事务A查询Person表,条件里不适用具有唯一约束的列,然后B向Person表插入数据,满足A的查询条件,B事务堵塞,A结束后,B才能继续执行。

3:同2,不同的是B插入的数据不满足A的查询条件,B事务同样会堵塞,在A接受后才能继续。

 

这是不是说明在使用唯一约束的列查询Person的时候,事务是对行锁定,不适用唯一约束的列作为查询条件的时候,事务是对表锁定?

北在北方的主页 北在北方 | 初学一级 | 园豆:180
提问于:2016-12-23 14:30
< >
分享
最佳答案
0

s是的.他能确定是一行的就是行锁.需要过滤的就是表锁

收获园豆:5
吴瑞祥 | 高人七级 |园豆:29449 | 2016-12-23 14:36
其他回答(1)
0

序列化级别,申请的是范围锁,你需要理解Range的含义

悦光阴 | 园豆:2251 (老鸟四级) | 2016-12-23 14:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册