CMU15445 Lecture 19: Multi-Version Concurrency Control
阿新 • • 發佈:2022-03-10
MVCC不是單純的用來實現併發控制,一般是用來與2PL,OCC,T/O結合使用
Multi-Version Concurrency Control
read-only txn can read a consistent snapshot without acquiring locks?txn可以做到像是全程在讀一個靜態的資料庫
這裡只依賴mvcc,達不到serializable,得去和2PL之類的結合,才能達到serializable
這裡還不是serializable,為什麼要等待?
Concurrency Control Protocol
Version Storage
既然能夠遍歷查詢,那麼為什麼不能能夠建立,上面T2的問題?
Append-Only Storage
oldest-to-newest:不需要更新索引,但是需要遍歷查詢最version
newest-to-oldest:需要更新索引,但是不需要遍歷查詢
Time-Travel Storage
time-travel table
delta storage segment
Garbage Collection
不能夠無限的儲存歷史版本,刪除歷史版本需要處理的問題:
- 怎樣去找到需要刪除的歷史版本
- 如何決定什麼什麼時候去刪除歷史版本
Tuple-level
Background Vacuuming
優化版本,只對dirty的page做scan
Cooperative Cleaning
index查詢時順便清除歷史版本,但是隻適合O2N chain
Transaction-level GC
Index Management
?
secondary index 指向 physical address
secondary index 指向 primary index
secondary index 指向 tuple id的indirect layer
MVCC index
mvcc需要儲存duplicate key?
由於mvcc必須儲存duplicate key,那麼對於unique constraint需要額外的處理