存储过程中没有索引的常见死锁

时间:2014-09-11 13:01:14

标签: sql-server sql-server-2008 indexing deadlock

我正在调查生产SQL Server 2008 R2盒子上的一些死锁,这些死锁似乎都与相同的存储过程有关。

该过程非常简单..它更新表行上的一列,并使用标识列(ID)查找该行。

进一步研究这个奇怪的是,Clustered索引甚至没有设置为标识列,并且该列也没有非聚集索引。我看过执行计划,它说它正在进行聚集索引扫描。

这可能是造成僵局的原因吗?如果是这样,有人会介意解释原因吗?它可以获取页面锁吗?查看MSDN文档,它说U锁应该可以防止常见的死锁。

1 个答案:

答案 0 :(得分:1)

这将解释这种僵局以及如何纠正它:

http://www.intertech.com/Blog/sql-server-deadlocks-caused-by-clustered-index-scan/

你是对的,这是由于聚集索引扫描。您需要在身份(ID)列上放置一个非聚集索引,并且应该修复它。