2016-09-16 49 views
0

我有一個模式綁定視圖(SSMS 2008 R2)運行在由前端應用程序維護和更新的一組表上。本週早些時候,在部署更新應用程序之後,儘管在開發階段通過成功運行,每次在Prod中運行時,視圖突然死鎖 - 受害者。VIEW通過應用程序端命令反覆死鎖

運行跟蹤並抓取死鎖圖形顯示競爭的DELETE語句來自應用程序(它不更新記錄,而是刪除和插入)。

編輯1:死鎖是由與IX級鎖定競爭的應用程序端命令引起的。 VIEW發行S級鎖,但競爭性命令繼續死鎖,VIEW查詢一直是受害者進程。將隔離設置爲'read uncommitted'不能解決問題。

VIEW多次在同一個表上遞歸地外連接以創建記錄的鏈接歷史記錄。我懷疑這是使VIEW過於複雜以避免鎖定時間的功能。它似乎工作了半天,然後會一直陷入僵局。

這是一個簡單的能力問題,還是有更好的方法來構建報告結構來彌補死鎖問題?

+0

這裏有太多的揮手,向我們展示代碼。從視圖定義開始,然後定義支持表及其索引/鍵。 – RBarryYoung

回答

0

如果在視圖中出現很多死鎖,可能需要將其分解爲大量更簡單的視圖 - 模式綁定視圖具有從多個表中繪製的索引時,它也可能特別傾向於鎖定問題。