2012-06-22 40 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」) –