解釋在具有多種粒度鎖定的2PL中的排程以及樹狀結構下的排程(DBMS)


資料庫的鎖定和解鎖應以避免不一致性、死鎖和飢餓的方式進行。

2PL鎖定協議

每個事務將分兩個階段鎖定和解鎖資料項。

  • **增長階段** - 此階段發出所有鎖。所有對資料項的更改提交後,不會釋放鎖,然後第二階段(收縮階段)開始。

  • **收縮階段** - 此階段不發出鎖,所有對資料項的更改都被記錄(儲存),然後釋放鎖。

考慮如下所示的樹狀結構資料庫:

A -> B -> C

現在讓我們瞭解一下**在具有多種粒度鎖定的2PL下不可能的排程以及在樹協議下可能的排程。**

  • 事務Ti的第一個鎖可以是圖上的任何專案。

  • 然後,如果X的父專案前被Ti鎖定,則資料項X可以被事務Ti鎖定。

  • 之前鎖定的資料項可以在任何時間解鎖。

T1T2
lock(A)
lock(B)
Unlock(A)

lock(A)
lock(C)
Unlock(B)

lock(B)

Unlock(A)

Unlock(B)
Unlock(C)

這裡:

在事務T1

  • 增長階段是從步驟1-3。
  • 收縮階段是從步驟5-6。
  • 鎖定點在3。

現在,讓我們瞭解一下**在具有多種粒度鎖定的2PL下可能的排程以及在樹協議下不可能的排程。**

  • 它分兩個階段執行。
  • 鎖定在增長階段完成。
  • 解鎖在收縮階段完成。
  • 鎖定點是增長階段結束的點。
T1T2
lock(A)

lock(B)
lock(C)

Unlock(B)
Unlock(A)
Unlock(B)

這裡:

在事務T2

  • 增長階段在步驟2。
  • 收縮階段在步驟4。
  • 鎖定點在2

更新於:2021年7月6日

398 次檢視

啟動您的職業生涯

完成課程獲得認證

開始
廣告