2PL學習記錄

2PL學習記錄

《區塊鏈核心算法解析》中提及2PL,最早接觸2PL應該是在大三數據庫原理課上,但是已經忘記了,所以重新學習一下2PL。

事務可串行性(SERIALIZABLE)

說到2PL兩階段鎖,就不得不提及事務可串行性

  • 在說事務可串行性之前,先講講爲什麼數據會出錯,以及衝突操作的概念。
    1. 爲什麼會出錯:
       那是因爲多個事務訪問數據庫,比如A事務先讀1資源,B事務後寫1資源,如果出現問題先讓B事務寫了1資源,那麼A事務就會讀錯了,這是併發調度產生的問題。
    2. 衝突操作的概念:
      衝突操作是指不同的事務對同一個數據的讀寫操作和寫寫操作,還有同一個事務的讀寫。
      Ri (x)與Wj(x) (事務Ti讀x,Tj寫x)
      Wi(x)與Wj(x) (事務Ti寫x,Tj寫x)
      Ri(x)與Wi(x) (事務Ti讀x,Tj寫x)
  • 事務可串行性是爲了保證數據庫在併發操作時,數據是正確,可以看串行調度的定義:一個調度中,屬於一個事務的所有操作連續執行,稱之爲串行調度。
    簡單來說,就是一次併發操作(多個事務操作數據庫)得到的結果(事務執行到最後的結果(讀或者寫))與某一次串行調度的結果是一致的,就可以保證這次併發操作是正確的。

2PL(2階段鎖協議,two-phase locking protocol)

  • 2階段鎖協議,就是給要做的數據上鎖,然後執行完所有操作後再解鎖,解鎖時就不能有任何操作了。所以是兩階段(上鎖操作+解鎖),來保證數據不出錯。
  • 2PL內容很少,重點基本上是理解可串行性和衝突操作。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章