8000 6. Concurrency Control · ShujianQian/felis Wiki · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

6. Concurrency Control

ShujianQian edited this page Jan 14, 2022 · 3 revisions

Link to the better HTML version of the following table


HTML Version


Felis Concurrency Control
Phase Insert InsertComplete Append AppendComplete Execute ExecuteComplete
Actions Batch initialization creates new VHandle
  • Adds entry to the hash table
[code]
IPPT initialization creates new VHandle
  • Adds entry to the hash table
[code]
IPPT Append to extraVHandle
  • Adds entry to the hash table
[code]
IPPT Read Row
  • Read is based on given SID of ???
[code]
Batch initialization creates new VHandle
  • Adds entry to the hash table
[code]
Major GC - Run GC
  • GC clears VHandle versions except for the last version
[code]
Batch Append to VHandle
  • Writes to the version array
[code]
Grow VHandle
  • Increases the size of the handle
  • Also performs GC
[code]
GC VHandle
  • Add VHandle to per-core GC
[code]
GC extraVHandle
  • Collects all extraVHandle nodes except for the last one
[code]
N.A. EPPT Initialization creates new VHandle
  • Appends entry to the hash table
[code]
EPPT Initialization creates new version
  • Appends new extraVHandle node to ExtraVHandle linked list
[code]
BT reads row with version
  • Read with the version that is the SID.
[code]
BT writes row with version
  • Write to the empty version with the version that is the SID.
[code]
Insert VHandle creation during batch initialization.
  • Adds entry to the hash table
[code]
Problem: contented accesses/writes to the same hash table.
Solution: performs the addition with CAS().
Impossible:
Different Phases
Impossible:
Different Phases
Impossible:
Different Phases
Impossible:
Different Phases
Impossible:
Different Phases
Impossible:
Different Phases
d1 No Conflict
Clone this wiki locally
0