刷題筆記0315

數據庫併發控制

封鎖

  • 排他鎖(寫鎖,X鎖):事務T對數據對象A加上X鎖,則只允許T讀取和修改A,任何其他事務不能再對A加任何鎖,直到T釋放A上的鎖。
  • 共享鎖(讀鎖,S鎖):事務T對數據對象A加上S鎖,則T可以讀A但不能修改A,其他事務直能再對A加S鎖,不能加X鎖,直到T釋放A上的S鎖。

封鎖協議

  • 一級封鎖協議:事務T在修改數據R之前必須先加X鎖,直到事務結束才釋放。可防止丟失修改。
  • 二級封鎖協議:在一級基礎上增加事務T在讀取數據之前必須加S鎖,讀完後即可釋放。可防止讀髒數據。
  • 三級封鎖協議:在一級基礎上增加事務T在讀數據之前必須加S鎖,直到事務結束才釋放。可防止不可重複讀。

活鎖和死鎖

  • 活鎖:事務可能永遠等待的情況是活鎖。避免活鎖的簡單方法是採用先來先服務策略、
  • 死鎖:如果事務T1封鎖數據R1,T2封鎖了數據R2,然後T1請求封鎖R2,因T2已經封鎖R2於是T1只能等待;接着T2請求封鎖R1,於是T2也直能等待;這就出現了T1等待T2,T2也等待T1的局面,兩個事務永遠不能結束,形成死鎖。
    • 死鎖的預防:
      (1)一次封鎖法:每個事務必須一次將所有要使用 數據全部加鎖。
      (2)順序封鎖法:對數據規定一個封鎖順序,所有事務都按照這個順序實施封鎖。
    • 死鎖的診斷和解除
      (1)超時法
      (2)等待圖法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章