这是Transaction isolation levels relation with locks on table
的后续问题我想知道隔离级别之间的速度差异。您可以实现哪些速度优势在各级之间切换?你能证明这些中的每一个都可以导致锁定等待吗?
我也想知道:做这个更新查询:
UPDATE product SET sold = 1 WHERE id = 10 AND sold = 0;
如果有人在执行查询期间修改了标记sold
,它会对这些采集级别产生不同的后果吗?
答案 0 :(得分:1)
间隙锁定是READ COMMITTED和REPEATABLE READ之间的常见区别。如果您在争用相同的间隙锁时遇到并发查询,则会影响锁定等待时间。
在您显示的UPDATE
查询中,假设id
是主键,查询应使用主键索引来选择单行,因此该查询不会有间隙锁。
重新评论:
锁定对性能没有影响。如果查询必须等待获取查询所需的锁,则锁等待可能延迟执行的开始,但是一旦执行开始,它将在任何事务隔离级别具有相同的性能。
此外,如果没有任何并发查询保存所需的锁,则不会有额外的等待锁。