为什么快照隔离级别下的事务会进行S和IX锁定?

时间:2013-07-26 15:38:15

标签: sql-server deadlock snapshot isolation-level

我正在调查死锁,我在分析器的死锁xml文件中看到进程 process5332cf8 快照隔离级别(isolationlevel="snapshot (5)")下运行事务。

但不知何故,它会在页面上锁定 IX 并想要另外一个。

这可能是什么原因(除了隔离级别在不太可能发生的事件中被更改为非快照)?

我是否遗漏了有关Snapshot IL的内容?

PS:完整的xml:http://ideone.com/yuU9td

1 个答案:

答案 0 :(得分:4)

写入始终采取锁定。 IX是写锁。至于其他进程(两个SELECT,进程process6593498和process5cc1498),它们处于read committed状态。

如果您想避免与快照隔离争用,首先必须将它用于读取事务。