2015-12-21 55 views
-1

什麼是死鎖,以及如何在sql server中處理它們。 例如,當用戶超載,然後我的sql服務器給予他們的迴應,但其中一些請求被破壞。 我怎麼能強制,而我的數據庫在短時間內需要很多請求。例如:8個專用服務器同時使用20000-40000個併發用戶sql服務器隔離級別和死鎖

+1

如果你不知道什麼是死鎖,你應該從這裏開始(https://technet.microsoft.com/en-us/library/ms177433(v = sql.105).aspx)。這不是一個簡單的話題,可以在一個問題中解釋;它太廣泛了。底線是,你可以編寫代碼來減少死鎖,但你可以從根本上*永遠不會*完全消除它們。您的應用程序只需要能夠在發生時處理它們。 –

+1

簡短回答:嘗試快照隔離:http://www.brentozar.com/archive/2013/01/implementing-snapshot-or-read-committed-snapshot-isolation-in-sql-server-a-guide/。雖然這個東西很複雜。您應該先隔離特定的查詢是否導致死鎖。這裏有一個鏈接:http://www.brentozar.com/archive/2014/06/capturing-deadlock-information/。我只是發佈鏈接,因爲您需要閱讀並理解這些鏈接,然後發佈具體問題。 –

回答

1

這是一個長格式的註釋。在我的一些ColdFusion應用程序中,我採取了以下方法來處理死鎖。

  • 將cfquery標籤放入返回ColdFusion查詢對象的函數中。
  • 嘗試調用函數使用try/catch語句最多3次
  • 如果還是不成功的

這種方法不限於ColdFusion的拋出一個錯誤。它可以應用於.net,php,java甚至tsql。

此外,它不會消除死鎖問題。但是,它會減少它發生的次數。