有人告诉我,如果您的事务由多个语句组成,那么SNAPSHOT
事务隔离级别是保证数据时间点视图一致的唯一方法。为什么SERIALIZABLE
事务隔离级别不足以完成此任务?根据设计,锁SERIALIZABLE
非常紧。
我认为我理解上的差距在于我不确定何时SERIALIZABLE
会非常紧地锁定。像下面这样的脚本可能对查找我所缺少的内容非常有帮助。
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
SELECT TOP (1) * FROM [Hit_Me_First];
WAITFOR DELAY '00:02:00';
SELECT TOP (1) * FROM [Hit_Me_Second];
COMMIT;