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