Occ issues

  • Tracking “anti-dependencies”
    • global transaction IDha

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

  • Exam read-set up-to-date

Phase 3

  • Write write-set & tid

Delete

  • Mark record as absent

Insert

  • Insert empty record first