Abstract
The Optimistic Concurrency Control (OCC) method has been commonly used for in-memory databases to ensure transaction serializability - a transaction will be aborted if its read set has been changed during execution. This simple criterion to abort transactions causes a large proportion of false positives, leading to excessive transaction aborts. Transactions aborted false-positively (i.e. false aborts) waste system resources and can significantly degrade system throughput (as much as 3.68x based on our experiments) when data contention is intensive. Modern in-memory databases run on systems with increasingly parallel hardware and handle workloads with growing concurrency. They must efficiently deal with data contention in the presence of greater concurrency by minimizing false aborts. This paper presents a new concurrency control method named Balanced Concurrency Control (BCC) which aborts transactions more carefully than OCC does. BCC detects data dependency patterns which can more reliably indicate unserializable transactions than the criterion used in OCC. The paper studies the design options and implementation techniques that can effectively detect data contention by identifying dependency patterns with low overhead. To test the performance of BCC, we have implemented it in Silo and compared its performance against that of the vanilla Silo system with OCC and two-phase locking (2PL). Our extensive experiments with TPC-Wlike, TPC-C-like and YCSB workloads demonstrate that when data contention is intensive, BCC can increase transaction throughput by more than 3x versus OCC and more than 2x versus 2PL; meanwhile, BCC has comparable performance with OCC for workloads with low data contention.
Original language | English (US) |
---|---|
Pages (from-to) | 504-515 |
Number of pages | 12 |
Journal | Proceedings of the VLDB Endowment |
Volume | 9 |
Issue number | 6 |
DOIs | |
State | Published - 2016 |
Event | 42nd International Conference on Very Large Data Bases, VLDB 2016 - New Delhi, India Duration: Sep 5 2016 → Sep 9 2016 |
All Science Journal Classification (ASJC) codes
- Computer Science (miscellaneous)
- General Computer Science