事務(wù)高度與并發(fā)控制
9.1 調(diào)度:定義在多個(gè)事務(wù)上的調(diào)度是這些事務(wù)的所有操作的一個(gè)執(zhí)行序列,代表了這些操作的執(zhí)行順序;沖突操作:事務(wù)Ti 的操作Ii與事務(wù)Tj的操作Ij是沖突的,當(dāng)且僅當(dāng)Ii 和 Ij訪問數(shù)據(jù)庫中同一個(gè)數(shù)據(jù)項(xiàng)Q,并且Ii 和 Ij中至少有一個(gè)是寫操作write(Q);沖突可串行:一個(gè)并發(fā)調(diào)度沖突等價(jià)于某個(gè)串行調(diào)度(判斷一個(gè)并行調(diào)度是否正確)
死鎖是指數(shù)據(jù)庫系統(tǒng)中部分或全部事務(wù)由于無法獲得對(duì)需要訪問的數(shù)據(jù)項(xiàng)的控制權(quán)而處于等待狀態(tài),并且將一直等待下去的一種系統(tǒng)狀態(tài)。
9.2 ACID:Atomicity原子性;Consistency一致性;Isolation隔離性;Durability持久性
9.3 1級(jí)加鎖協(xié)議要求事務(wù)T在修改數(shù)據(jù)項(xiàng)Q之前必須先對(duì)Q加X鎖,直到事務(wù)結(jié)束才釋放該鎖。事務(wù)結(jié)束包括正常結(jié)束(commit)和非正常結(jié)束(rollback)。但事務(wù)如果是只讀Q而不對(duì)其進(jìn)行修改,是不需要對(duì)Q加鎖的。
2級(jí)加鎖協(xié)議是在1級(jí)加鎖協(xié)議基礎(chǔ)上,要求事務(wù)T在讀取數(shù)據(jù)項(xiàng)Q之前必須先對(duì)其加S鎖,讀完Q后可以立即釋放S鎖。
3級(jí)加鎖協(xié)議則是在1級(jí)加鎖協(xié)議基礎(chǔ)上,要求事務(wù)T在讀取數(shù)據(jù)項(xiàng)Q之前必須先對(duì)其加S鎖,但是需要等到事務(wù)結(jié)束時(shí)才釋放該S鎖。
9.4 2階段鎖協(xié)議將每個(gè)事務(wù)的執(zhí)行過程分為加鎖階段和解鎖階段。在加鎖階段,事務(wù)可以申請(qǐng)獲得數(shù)據(jù)項(xiàng)上的任何類型的鎖,但不允許釋放任何鎖。在解鎖階段,事務(wù)可以釋放任何數(shù)據(jù)項(xiàng)上的任何類型的鎖,但不能再申請(qǐng)任何鎖。每個(gè)事務(wù)開始執(zhí)行后就進(jìn)入了加鎖階段。當(dāng)?shù)谝淮吾尫沛i后,即轉(zhuǎn)入解鎖階段。
9.5解決死鎖主要采用死鎖預(yù)防和死鎖檢測(cè)與恢復(fù)兩類方法。
死鎖預(yù)防利用死鎖預(yù)防協(xié)議,通過破壞死鎖產(chǎn)生的必要條件來避免系統(tǒng)進(jìn)入死鎖狀態(tài)。
一次性加鎖法;順序加鎖法
死鎖檢測(cè)與恢復(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ù)由于始終無法獲得對(duì)所需訪問的數(shù)據(jù)項(xiàng)的控制權(quán)而長(zhǎng)期等待下去,無法繼續(xù)執(zhí)行。
9.7 鎖粒度大:被加鎖數(shù)據(jù)項(xiàng)少、事務(wù)并發(fā)執(zhí)行度低、系統(tǒng)開銷;鎖粒度小則反之
9.8 基于鎖的并發(fā)控制技術(shù)的原理
(IT教育頻道)