我实验的结果是这样:
两个事务A和B都以序列化级别启动,
1:事务A查询Person表,条件里使用了具有唯一约束的列,然后B向Person表插入一条A查询范围外的,能够插入成功,然后结束事务。
2:事务A查询Person表,条件里不适用具有唯一约束的列,然后B向Person表插入数据,满足A的查询条件,B事务堵塞,A结束后,B才能继续执行。
3:同2,不同的是B插入的数据不满足A的查询条件,B事务同样会堵塞,在A接受后才能继续。
这是不是说明在使用唯一约束的列查询Person的时候,事务是对行锁定,不适用唯一约束的列作为查询条件的时候,事务是对表锁定?
s是的.他能确定是一行的就是行锁.需要过滤的就是表锁
序列化级别,申请的是范围锁,你需要理解Range的含义