事務(wù)高度與并發(fā)控制
9.1 調(diào)度:定義在多個事務(wù)上的調(diào)度是這些事務(wù)的所有操作的一個執(zhí)行序列,代表了這些操作的執(zhí)行順序;沖突操作:事務(wù)Ti 的操作Ii與事務(wù)Tj的操作Ij是沖突的,當(dāng)且僅當(dāng)Ii 和 Ij訪問數(shù)據(jù)庫中同一個數(shù)據(jù)項(xiàng)Q,并且Ii 和 Ij中至少有一個是寫操作write(Q);沖突可串行:一個并發(fā)調(diào)度沖突等價于某個串行調(diào)度(判斷一個并行調(diào)度是否正確)
死鎖是指數(shù)據(jù)庫系統(tǒng)中部分或全部事務(wù)由于無法獲得對需要訪問的數(shù)據(jù)項(xiàng)的控制權(quán)而處于等待狀態(tài),并且將一直等待下去的一種系統(tǒng)狀態(tài)。
9.2 ACID:Atomicity原子性;Consistency一致性;Isolation隔離性;Durability持久性
9.3 1級加鎖協(xié)議要求事務(wù)T在修改數(shù)據(jù)項(xiàng)Q之前必須先對Q加X鎖,直到事務(wù)結(jié)束才釋放該鎖。事務(wù)結(jié)束包括正常結(jié)束(commit)和非正常結(jié)束(rollback)。但事務(wù)如果是只讀Q而不對其進(jìn)行修改,是不需要對Q加鎖的。
2級加鎖協(xié)議是在1級加鎖協(xié)議基礎(chǔ)上,要求事務(wù)T在讀取數(shù)據(jù)項(xiàng)Q之前必須先對其加S鎖,讀完Q后可以立即釋放S鎖。
3級加鎖協(xié)議則是在1級加鎖協(xié)議基礎(chǔ)上,要求事務(wù)T在讀取數(shù)據(jù)項(xiàng)Q之前必須先對其加S鎖,但是需要等到事務(wù)結(jié)束時才釋放該S鎖。
9.4 2階段鎖協(xié)議將每個事務(wù)的執(zhí)行過程分為加鎖階段和解鎖階段。在加鎖階段,事務(wù)可以申請獲得數(shù)據(jù)項(xiàng)上的任何類型的鎖,但不允許釋放任何鎖。在解鎖階段,事務(wù)可以釋放任何數(shù)據(jù)項(xiàng)上的任何類型的鎖,但不能再申請任何鎖。每個事務(wù)開始執(zhí)行后就進(jìn)入了加鎖階段。當(dāng)?shù)谝淮吾尫沛i后,即轉(zhuǎn)入解鎖階段。
9.5解決死鎖主要采用死鎖預(yù)防和死鎖檢測與恢復(fù)兩類方法。
死鎖預(yù)防利用死鎖預(yù)防協(xié)議,通過破壞死鎖產(chǎn)生的必要條件來避免系統(tǒng)進(jìn)入死鎖狀態(tài)。
一次性加鎖法;順序加鎖法
死鎖檢測與恢復(fù)則是允許系統(tǒng)進(jìn)入死鎖狀態(tài),并且定期檢查系統(tǒng)是否發(fā)生死鎖。當(dāng)發(fā)現(xiàn)系統(tǒng)發(fā)生死鎖后,采取相應(yīng)的恢復(fù)機(jī)制使系統(tǒng)擺脫死鎖狀態(tài)。
9.6活鎖產(chǎn)生的原因是在系統(tǒng)非死鎖狀態(tài)下,某些事務(wù)由于始終無法獲得對所需訪問的數(shù)據(jù)項(xiàng)的控制權(quán)而長期等待下去,無法繼續(xù)執(zhí)行。
9.7 鎖粒度大:被加鎖數(shù)據(jù)項(xiàng)少、事務(wù)并發(fā)執(zhí)行度低、系統(tǒng)開銷小;鎖粒度小則反之
9.8 基于鎖的并發(fā)控制技術(shù)的原理
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |