Occ issues #
- Tracking “anti-dependencies”
Silo #
- epoch-based group commit
- only know order across epoch boundaries
- return results at epoch boundaries
Design
Global Epochs #
- A designated thread periodically advances global epoch number $E$
- Each worker $w$ maintains a local epoch number
TID #
|epoch|id distinguish same epoach transaction |lock bit|lastest-version bit|abset bit|
- (a) larger than the TID of any record read or written by the transaction
- (b) larger than the worker’s most recently chosen TID
- (c) in the current global epoch.
Commit protocol #
- Nodeset: The leaf nodes that overlap with the key space
[a,b)
During #
- Record read-set & write-set
Phase 1 #
- Lock all write set
- get new epoch
Phase 2 #
Phase 3 #
Delete #
Insert #
- Insert empty record first