學習啦>知識大全>知識百科>百科知識>

db2什么是死鎖

時間: 歐東艷656 分享

  DB2是IBM出品的一系列關系型數(shù)據(jù)庫管理系統(tǒng),分別在不同的操作系統(tǒng)平臺上服務。雖然DB2產品是基于UNIX的系統(tǒng)和個人計算機操作系統(tǒng),但在基于UNIX系統(tǒng)和微軟在windows系統(tǒng)下的Access方面,DB2追尋了ORACLE的數(shù)據(jù)庫產品。

  死鎖(Deadlock),這里指的是進程死鎖,是個計算機技術名詞。它是操作系統(tǒng)或軟件運行的一種狀態(tài):在多任務系統(tǒng)下,當一個或多個進程等待系統(tǒng)資源,而資源又被進程本身或其它進程占用時,就形成了死鎖。由于資源占用是互斥的,當某個進程提出申請資源后,使得有關進程在無外力協(xié)助下,永遠分配不到必需的資源而無法繼續(xù)運行,這就產生了一種特殊現(xiàn)象。

  死鎖的規(guī)范定義:集合中的每一個進程都在等待只能由本集合中的其他進程才能引發(fā)的事件,那么該組進程是死鎖的。

  一種情形,此時執(zhí)行程序中兩個或多個線程發(fā)生永久堵塞(等待),每個線程都在等待被其他線程占用并堵塞了的資源。例如,如果線程A鎖住了記錄1并等待記錄2,而線程B鎖住了記錄2并等待記錄1,這樣兩個線程就發(fā)生了死鎖現(xiàn)象。

  計算機系統(tǒng)中,如果系統(tǒng)的資源分配策略不當,更常見的可能是程序員寫的程序有錯誤等,則會導致進程因競爭資源不當而產生死鎖的現(xiàn)象。

  在兩個或多個任務中,如果每個任務鎖定了其他任務試圖鎖定的資源,此時會造成這些任務永久阻塞,從而出現(xiàn)死鎖。例如:事務A獲取了行1的共享鎖。事務B獲取了行2的共享鎖。

  現(xiàn)在,事務A請求行2的排他鎖,但在事務B完成并釋放其對行2持有的共享鎖之前被阻塞。

  現(xiàn)在,事務B請求行1的排他鎖,但在事務A完成并釋放其對行1持有的共享鎖之前被阻塞。

  事務B完成之后事務A才能完成,但是事務B由事務A阻塞。該條件也稱為循環(huán)依賴關系:事務A依賴于事務B,事務B通過對事務A的依賴關系關閉循環(huán)。

  除非某個外部進程斷開死鎖,否則死鎖中的兩個事務都將無限期等待下去。MicrosoftSQLServer數(shù)據(jù)庫引擎死鎖監(jiān)視器定期檢查陷入死鎖的任務。如果監(jiān)視器檢測到循環(huán)依賴關系,將選擇其中一個任務作為犧牲品,然后終止其事務并提示錯誤。這樣,其他任務就可以完成其事務。對于事務以錯誤終止的應用程序,它還可以重試該事務,但通常要等到與它一起陷入死鎖的其他事務完成后執(zhí)行。

  在應用程序中使用特定編碼約定可以減少應用程序導致死鎖的機會。有關詳細信息,請參閱將死鎖減至最少。

  死鎖經常與正常阻塞混淆。事務請求被其他事務鎖定的資源的鎖時,發(fā)出請求的事務一直等到該鎖被釋放。默認情況下,除非設置了LOCK_TIMEOUT,否則SQLServer事務不會超時。因為發(fā)出請求的事務未執(zhí)行任何操作來阻塞擁有鎖的事務,所以該事務是被阻塞,而不是陷入了死鎖。最后,擁有鎖的事務將完成并釋放鎖,然后發(fā)出請求底事務將獲取鎖并繼續(xù)執(zhí)行。

db2什么是死鎖

DB2是IBM出品的一系列關系型數(shù)據(jù)庫管理系統(tǒng),分別在不同的操作系統(tǒng)平臺上服務。雖然DB2產品是基于UNIX的系統(tǒng)和個人計算機操作系統(tǒng),但在基于UNIX系統(tǒng)和微軟在windows系統(tǒng)下的Access方面,DB2追尋了ORACLE的數(shù)據(jù)庫產品。 死鎖(Deadlock)
推薦度:
點擊下載文檔文檔為doc格式

精選文章

  • c語言中什么是主函數(shù)
    c語言中什么是主函數(shù)

    一般而言,編寫一個能運行在操作系統(tǒng)上的程序,都需要一個主函數(shù)。主函數(shù)意味著建立一個獨立進程,且該進程成為了程序的入口,對其它各函數(shù)(在某些

  • 指針在c語言中是什么
    指針在c語言中是什么

    在計算機中,所有的數(shù)據(jù)都是存放在內存中的,一般把內存中的一個字節(jié)稱為一個內存單元,不同的數(shù)據(jù)類型所占用的內存單元數(shù)不一樣,如int占用4個字節(jié)

  • c語言中什么是宏定義
    c語言中什么是宏定義

    宏定義,別名宏代換,是C提供的三種預處理功能的其中一種,這三種預處理包括:宏定義、文件包含、條件編譯。 相關參數(shù)編輯 不帶參數(shù) 宏定義又稱為宏

  • c語言中什么是函數(shù)
    c語言中什么是函數(shù)

    函數(shù)(function)表示每個輸入值對應唯一輸出值的一種對應關系。這種關系使一個集合里的每一個元素對應到另一個(可能相同的)集合里的唯一元素。函數(shù)f中對

243600