Hybrid Garbage Collection for Multi-Version Concurrency Control in SAP HANA 論文閱讀筆記
GC 的基本方法是把所有 commit-ts < 最小的 txn 的 version 回收(除了最後的)。但是 OLAP 會有 long-lived read txn,ts 比較小,在這個 read duration 中的 version 都不會被回收(但部分其實可以)
SAP HANA
- version storage
- table space 存 original (oldest),在 GC 時可能被更新
- version space 是 newest to oldest
Garbage Collector
Timestamp
與 global minimum txn-ts 比較
Interval Garbage Collector
如果沒有 txn-ts 落在2個連續 version 之間,那麼較早的 version 可以被清除。
Single / Group Garbage Collector
GC in SAP HANA
- group version + timestamp
- single version + interval
- table garbage collectors
Group Garbage Collector
維護一個全局 txn-ts list,node 使用 ref count
GC 的單位是 txn group
Interval Garbage Collector
從 GroupCommitContext 裏面 > min-ts 的開始,遍歷 version chain,檢查 interval
Table GC
如果可以預先知道哪些 table 會被訪問,那麼就可以做出優化。那些最近不會被訪問的 table 就可以做 GC
HybridGC
- 先粗粒度 group version GC,然後 table GC 或者 interval GC
- table GC 檢查 GroupCommitContext 的子集,回收 < global-min-ts
- interval GC 檢查所有 version chain