新聞中心
以下的文章主要描述的是SQL Server 2000數(shù)據(jù)庫中檢測與SQL Server 2000數(shù)據(jù)庫結(jié)束死鎖,在實(shí)際操作中我們大家經(jīng)常會遇到檢測與結(jié)束死鎖這一問題,那么他到底如何解決呢?以下就有對其的介紹。

柳城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
測和結(jié)束死鎖
在 Microsoft? SQL Server? 2000 中,單個用戶會話可能有一個或多個代表它運(yùn)行的線程。每個線程可能獲取或等待獲取各種資源,如:
鎖。
與并行查詢執(zhí)行相關(guān)的資源(與交換端口相關(guān)聯(lián)的處理協(xié)調(diào)器、發(fā)生器和使用者線程)。
線程。
內(nèi)存。
上述這些資源除內(nèi)存外都參與 SQL Server 死鎖檢測方案。對于內(nèi)存,SQL Server 使用基于超時的機(jī)制,該機(jī)制由 sp_configure 中的 query wait 選項(xiàng)控制。
在 SQL Server 2000數(shù)據(jù)庫 中,死鎖檢測由一個稱為鎖監(jiān)視器線程的單獨(dú)的線程執(zhí)行。在出現(xiàn)下列任一情況時,鎖監(jiān)視器線程對特定線程啟動死鎖搜索:
線程已經(jīng)為同一資源等待了一段指定的時間。鎖監(jiān)視器線程定期醒來并識別所有等待某個資源的線程。如果鎖監(jiān)視器再次醒來時這些線程仍在等待同一資源,則它將對等待線程啟動鎖搜索。
線程等待資源并啟動急切的死鎖搜索。
SQL Server 通常只執(zhí)行定期死鎖檢測,而不使用急切模式。因?yàn)橄到y(tǒng)中遇到的死鎖數(shù)通常很少,定期死鎖檢測有助于減少系統(tǒng)中死鎖檢測的開銷。
當(dāng)鎖監(jiān)視器對特定線程啟動死鎖檢測時,它識別線程正在等待的資源。然后,鎖監(jiān)視器查找特定資源的擁有者,并遞歸地繼續(xù)執(zhí)行對那些線程的死鎖搜索,直到找到一個循環(huán)。用這種方式識別的循環(huán)形成一個死鎖。
在識別死鎖后,SQL Server 通過自動選擇可以打破死鎖的線程(死鎖犧牲品)來結(jié)束死鎖。SQL Server 回滾作為死鎖犧牲品的事務(wù),通知線程的應(yīng)用程序(通過返回 1205 號錯誤信息),取消線程的當(dāng)前請求,然后允許不間斷線程的事務(wù)繼續(xù)進(jìn)行。
SQL Server 通常選擇運(yùn)行撤消時花費(fèi)最少的事務(wù)的線程作為死鎖犧牲品。另外,用戶可以使用 SET 語句將會話的 DEADLOCK_PRIORITY 設(shè)置為 LOW。DEADLOCK_PRIORITY 選項(xiàng)控制在死鎖情況下如何衡量會話的重要性。如果會話的設(shè)置為 LOW ,則當(dāng)會話陷入死鎖情況時將成為***犧牲品。
上述的相關(guān)內(nèi)容就是對SQL Server 2000數(shù)據(jù)庫中檢測和結(jié)束死鎖的描述,希望會給你帶來一些幫助在此方面。
文章標(biāo)題:SQLServer2000數(shù)據(jù)庫中的檢測
標(biāo)題路徑:http://m.fisionsoft.com.cn/article/djcisph.html


咨詢
建站咨詢
