日本精品aⅴ一区二区三区|国产欧美一二三区|国产乱码精品精|国产精品电影在线免费

      1. <blockquote id="utafg"><th id="utafg"></th></blockquote>
    1. <div id="utafg"></div>
        <blockquote id="utafg"><th id="utafg"></th></blockquote>

        <menuitem id="utafg"></menuitem>
      1. 您現(xiàn)在的位置是:首頁 >綜合 > 2023-08-01 09:27:08 來源:

        死鎖的原因及解決方法(死鎖)

        導(dǎo)讀 大家好,我是小華,我來為大家解答以上問題。死鎖的原因及解決方法,死鎖很多人還不知道,現(xiàn)在讓我們一起來看看吧!1、在兩個(gè)或多個(gè)任務(wù)中...

        大家好,我是小華,我來為大家解答以上問題。死鎖的原因及解決方法,死鎖很多人還不知道,現(xiàn)在讓我們一起來看看吧!

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

        2、例如: 事務(wù) A 獲取了行 1 的共享鎖。

        3、 事務(wù) B 獲取了行 2 的共享鎖。

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

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

        6、 事務(wù) A 必須在事務(wù) B 完成之后才能完成,但事務(wù) B 被事務(wù) A 阻塞。

        7、這種情況也稱為循環(huán)依賴關(guān)系:事務(wù) A 依賴于事務(wù) B,而事務(wù) B 又依賴于事務(wù) A,從而形成了一個(gè)循環(huán)。

        8、 除非某個(gè)外部進(jìn)程斷開死鎖,否則死鎖中的兩個(gè)事務(wù)都將無限期等待下去。

        9、Microsoft SQL Server Database Engine 死鎖監(jiān)視器定期檢查陷入死鎖的任務(wù)。

        10、如果監(jiān)視器檢測到循環(huán)依賴關(guān)系,將選擇其中一個(gè)任務(wù)作為犧牲品,然后終止其事務(wù)并提示錯(cuò)誤。

        11、這樣,其他任務(wù)就可以完成其事務(wù)。

        12、對于事務(wù)以錯(cuò)誤終止的應(yīng)用程序,它還可以重試該事務(wù),但通常要等到與它一起陷入死鎖的其他事務(wù)完成后執(zhí)行。

        13、 在應(yīng)用程序中使用特定編碼約定可以減少應(yīng)用程序?qū)е滤梨i的機(jī)會(huì)。

        14、有關(guān)詳細(xì)信息,請參閱將死鎖減至最少。

        15、 死鎖經(jīng)常與正常阻塞混淆。

        16、事務(wù)請求被其他事務(wù)鎖定的資源的鎖時(shí),發(fā)出請求的事務(wù)一直等到該鎖被釋放。

        17、默認(rèn)情況下,SQL Server 事務(wù)不會(huì)超時(shí)(除非設(shè)置了 LOCK_TIMEOUT)。

        18、因?yàn)榘l(fā)出請求的事務(wù)未執(zhí)行任何操作來阻塞擁有鎖的事務(wù),所以該事務(wù)是被阻塞,而不是陷入了死鎖。

        19、最后,擁有鎖的事務(wù)將完成并釋放鎖,然后發(fā)出請求底事務(wù)將獲取鎖并繼續(xù)執(zhí)行。

        20、 死鎖有時(shí)稱為抱死。

        21、 不只是關(guān)系數(shù)據(jù)庫管理系統(tǒng),任何多線程系統(tǒng)上都會(huì)發(fā)生死鎖,并且對于數(shù)據(jù)庫對象的鎖之外的資源也會(huì)發(fā)生死鎖。

        22、例如,多線程操作系統(tǒng)中的一個(gè)線程要獲取一個(gè)或多個(gè)資源(例如,內(nèi)存塊)。

        23、如果要獲取的資源當(dāng)前為另一線程所擁有,則第一個(gè)線程可能必須等待擁有線程釋放目標(biāo)資源。

        24、這就是說,對于該特定資源,等待線程依賴于擁有線程。

        25、在數(shù)據(jù)庫引擎 實(shí)例中,當(dāng)獲取非數(shù)據(jù)庫資源(例如,內(nèi)存或線程)時(shí),會(huì)話會(huì)死鎖。

        26、 在上圖中,對于 Part 表鎖資源,事務(wù) T1 依賴于事務(wù) T2。

        27、同樣,對于 Supplier 表鎖資源,事務(wù) T2 依賴于事務(wù) T1。

        28、因?yàn)檫@些依賴關(guān)系形成了一個(gè)循環(huán),所以在事務(wù) T1 和事務(wù) T2 之間存在死鎖。

        本文到此講解完畢了,希望對大家有幫助。