本文提出了避免死鎖的重要提示。 SQL Servers
雖然 SQL Server 在過去幾年中見證了巨大的發展,用戶仍然經常遇到僵局的情況。 理想情況下,數據庫服務器應該能夠檢索多個請求,但是它通常會導致阻塞。 一個進程等待釋放另一資源的衝突稱為塊。 然後是死鎖。
想像一下這樣一種情況,一個人要求第二個人釋放資源,而第二個人正在等待第一個人釋放資源。 結果,兩者都陷入了僵局。 由於兩個進程都被鎖定,並且都需要另一個進程來釋放資源或鎖定,因此任何一個過程都無法繼續。
在與 SQL servers,死鎖非常普遍,它們會妨礙整個過程。 完全避免死鎖是不可能的,但是可以肯定的是可以最大程度地減少產生死鎖的機會。
死鎖麻煩

應該注意的是,死鎖直接影響性能,並且可能會中斷數據庫的處理。
1.保持順序不變
如果資源沒有按照預先定義的順序處理,死鎖必然會發生。為了最大限度地減少死鎖,所有並發事務都應該按照預先定義的順序存取物件。資料庫管理員應該設計一套清晰的資料庫物件存取規則。通常,鎖監視器會執行死鎖檢查,並在偵測到死鎖時選擇一個死鎖犧牲程序並回滾其交易。這樣,所有鎖都會被釋放,之前的會話就可以繼續執行進程。死鎖犧牲進程的選擇依據是伺服器設定的死鎖優先權或回滾成本。
2.交易期間的限制
您可以限制用戶在處理事務時輸入任何類型的數據,並且可以在事務之前更新數據以避免死鎖。 另外,請嘗試將用戶互動保持在最低水平,因為這會影響速度。 理想情況下,交易應簡短快速,以免出現僵局。 應用程序的設計應使其在最短的時間內抓住鎖並儘快釋放它們。
3. NOLOCK提示
當有人以SQL默認隔離級別對錶運行查詢時,表將被鎖定,下一個查詢必須等待釋放。 NOLOCK提示在這種情況下很有用,因為它允許覆蓋表,其他查詢可以輕鬆訪問。
4.使用綁定連接
如果同一個應用程序可以打開兩個或多個可以相互配合的連接,則不會創建死鎖。 這就是為什麼建議使用綁定連接的原因。
死鎖不是您在工作時可能遇到的唯一麻煩 SQL Server 數據庫。 實際上是 sql損壞 更有可能引起您的悲傷。 為了避免數據丟失的情況,請購買功能強大的恢復工具,例如 DataNumen SQL Recovery.
作者簡介:
Victor Simon是的數據恢復專家 DataNumen,Inc.是數據恢復技術的全球領導者,包括 mdb恢復 和sql恢復軟件產品。 欲了解更多信息,請訪問 https://www.datanumen.com/