2012-06-22 16 views
2

我们正在使用分区视图(SQL Server 2008 Standard,分区表不是一个选项),如果我们考虑分区消除目标,它们可以很好地工作:如果我们在分区视图中运行查询我们选择作为鉴别器的列的一个子句,从实际执行计划中我们可以看到只有与指定的鉴别器值相关的表被击中。但是,如果存在并发的INSERT或UPDATE语句,即使这些语句没有打到鉴别器选择的表,我们也会遇到锁定问题。SQL Server分区视图和锁定

分析锁我可以看到,即使执行计划显示只有正确的一个表被读取,IS锁仍然放在分区视图中的所有表上,当然如果其他人已经把X会锁定其中一个分区视图上运行的整个查询被锁定在该分区上,即使带有X upon的表完全不被读取。

这是一般的分区视图的限制,还是有一种方法来避免它,而坚持分区视图?我们按照SQL Server联机丛书建议创建了分区视图和相关内容。

感谢

黄蜂

回答

2

这是由设计。不要锁定X个整个表格。

+0

我们没有明确地在整个表上执行X锁,这发生在没有显式锁定提示的事务中的MERGE语句期间。 – Wasp

+0

不幸的是,没有任何事情可以做,只是在视图中添加NOLOCK提示。 –

+1

您可以通过[如何解决由SQL Server中的锁升级导致的阻止问题](http://support.microsoft.com/kb/323630)尝试阻止X锁(“-T1211”) –