解釋在具有多種粒度鎖定的2PL中的排程以及樹狀結構下的排程(DBMS)
資料庫的鎖定和解鎖應以避免不一致性、死鎖和飢餓的方式進行。
2PL鎖定協議
每個事務將分兩個階段鎖定和解鎖資料項。
**增長階段** - 此階段發出所有鎖。所有對資料項的更改提交後,不會釋放鎖,然後第二階段(收縮階段)開始。
**收縮階段** - 此階段不發出鎖,所有對資料項的更改都被記錄(儲存),然後釋放鎖。
考慮如下所示的樹狀結構資料庫:
A -> B -> C

現在讓我們瞭解一下**在具有多種粒度鎖定的2PL下不可能的排程以及在樹協議下可能的排程。**
事務Ti的第一個鎖可以是圖上的任何專案。
然後,如果X的父專案前被Ti鎖定,則資料項X可以被事務Ti鎖定。
之前鎖定的資料項可以在任何時間解鎖。
| T1 | T2 |
|---|---|
| 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下可能的排程以及在樹協議下不可能的排程。**
- 它分兩個階段執行。
- 鎖定在增長階段完成。
- 解鎖在收縮階段完成。
- 鎖定點是增長階段結束的點。
| T1 | T2 |
|---|---|
| lock(A) | |
| lock(B) | |
| lock(C) | |
| Unlock(B) | |
| Unlock(A) | |
| Unlock(B) |
這裡:
在事務T2中
- 增長階段在步驟2。
- 收縮階段在步驟4。
- 鎖定點在2
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP