不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學(xué)習(xí)啦>知識(shí)大全>知識(shí)百科>百科知識(shí)>

db2什么是死鎖

時(shí)間: 歐東艷656 分享

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

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

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

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

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

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

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

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

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

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

  在應(yīng)用程序中使用特定編碼約定可以減少應(yīng)用程序?qū)е滤梨i的機(jī)會(huì)。有關(guān)詳細(xì)信息,請(qǐng)參閱將死鎖減至最少。

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

db2什么是死鎖

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

精選文章

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

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

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

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

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

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

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

    函數(shù)(function)表示每個(gè)輸入值對(duì)應(yīng)唯一輸出值的一種對(duì)應(yīng)關(guān)系。這種關(guān)系使一個(gè)集合里的每一個(gè)元素對(duì)應(yīng)到另一個(gè)(可能相同的)集合里的唯一元素。函數(shù)f中對(duì)

243600