Parallel execution for conflicting transactions
Neha Narula · DSpace@MIT (Massachusetts Institute of Technology) · 2015
Multicore main-memory databases only obtain parallel performance when transactions do not conflict. Conflicting transactions are executed one at a time in order to ensure that they have serializable effects. Sequential execution on contended data leaves cores idle and re-duces throughput. In other parallel programming contexts—not serializable transactions— techniques have been developed that can reduce contention on shared variables using per-core state. This thesis asks the question, can these techniques apply to a general serializable database? This work introduces a new concurrency control technique, phase reconciliation, that uses per-core state to greatly reduce contention on popular database records for many im-portant workloads. Phase reconciliation uses the idea of synchronized phases to amortize the cost of combining per-core data and to extract parallelism. Doppel, our phase reconciliation database, repeatedly cycles through joined and split