C 基礎 資料庫死鎖筆記

2022-07-20 16:30:17 字數 1404 閱讀 2673

所謂的死鎖,主要是由於程序b要訪問程序a所在的資源,而程序a又由於種種原因,不釋放掉其所占用的資源,所以資料庫就會一直處於阻塞狀態。

四個必要條件:

必要條件:互斥,乙個資源,在同一時間點上,只能由乙個程序訪問。死鎖分析:當任務ta在使用資源ra的時候,產生了未預知的問題,從而意外的停止了執行,但是還沒有釋放ra,所以就造成的對資源ra的死鎖,這個也是死鎖產生最根本的原因,其他的原因基本上都是由這個為基礎的。

必要條件:資源的非剝奪,程序無法將正在被其他程序使用的資源強行剝奪過來。死鎖分析:當產生其他情況的時候,正是由於這個條件,從而造成的程序的無止境等待。

必要條件:資源的迴圈等待死鎖分析:ta申請ra,而tb正在使用ra,同時tb申請rb,但tc正在使用rb,此時tc申請rc,而rc正在被ta使用,從而產生死鎖。

可能產生死鎖的資源

rid,堆中的單行

key,索引中的鍵,行鎖

pag,頁

ext,區結構

hobt,堆或b樹

tab,表,包括資料和索引

file,資料庫檔案

metadata,元資料

allocation_unit,分配單元

db,整個資料庫

避免產生死鎖的方法

由於死鎖是因為上述的四個必要條件共同作用所產生的,所以按照一般的思路,只要能夠打破其中乙個,就可以有效的避免死鎖的產生。

下面是針對四個必要條件所可以作出的處理:

允許資源的併發訪問。

允許程序的資源剝奪。

程序遠行所需資源一次提交。

資源的有序分配,也就是按同一順序訪問資源。

其他方法(這些方法的主要目標是使資源的占用時間最小化,從而降低死鎖的產生機會):

避免事務中的使用者互動。

保持事務中簡短並處於乙個批處理中。

使用較低階別的隔離級別。

使用基於行版本控制的隔離級別。

使用繫結連線,及將多個會話繫結到乙個事務中,這樣可以有效的減少事務的數量。

C 基礎 資料庫死鎖筆記

為什麼80 的碼農都做不了架構師?所謂的死鎖,主要是由於程序b要訪問程序a所在的資源,而程序a又由於種種原因,不釋放掉其所占用的資源,所以資料庫就會一直處於阻塞狀態。四個必要條件 必要條件 互斥,乙個資源,在同一時間點上,只能由乙個程序訪問。死鎖分析 當任務ta在使用資源ra的時候,產生了未預知的問...

資料庫死鎖

1.死鎖的概念 死鎖是程序死鎖的簡稱,是由dijkstra於1965年研究銀行家演算法時首先提出來的。它是計算機作業系統乃至併發程式設計中最難處理的問題之一。實際上,死鎖問題不僅在計算機系統中存在,在我們日常生活中它也廣泛存在。我們先看看這樣乙個生活中的例子 在一條河上有一座橋,橋面較窄,只能容納一...

資料庫死鎖

資料庫在進行insert,update,delete這些更新操作的時候為了保證資料一致性都會使用排他鎖。乙個事務裡進行update操作,在事務結束之前 commit or rollback 排他鎖不會被釋放。因此在乙個事務裡update多條資料的時候執行順序就尤為重要,兩個併發事務中更新操作的執行順...