LADS: Exploiting Single-Threaded Model in Multi-Core Systems

The widely adopted single-threaded OLTP model assigns a single thread to each static partition of the database for processing transactions in a partition. This simplifies concurrency control while retaining parallelism. However, it suffers performance loss arising from skewed workloads as well as transactions that span multiple partitions. In this paper, we present a dynamic single-threaded in-memory OLTP system, called LADS, that extends the simplicity of the single-threaded model. The key innovation in LADS is the separation of dependency resolution and execution into two nonoverlapping phases for batches of transactions. After the first phase of dependency resolution, the record actions of the transactions are partitioned and ordered. Each independent partition is then executed sequentially by a single thread, avoiding the need for locking. By careful mapping of the tasks to be performed to threads, LADS is able to achieve a high degree of balanced parallelism. We evaluate LADS against H-Store, a partition-based database; DORA, a data-oriented transaction processing system; and Silo, a multicore in-memory OLTP engine. The experimental study shows that LADS achieves up to 20x higher throughput than existing systems and exhibits better robustness with various workloads.

We started to work on this in 2014 as part of memepiC (distributed in-memory data flow system based on epiC programming model/api -- see previous post on memepiC), and submitted the first version to VLDB 15 early 2015, and deposited into CoRR in March 2015[1]. Due to fine tuning, the system has improved, but the idea of separating conflict resolution/concurrency control from execution remains the core concept [2]. However, more and more comparisons were done along the way, and the results show LADS achieves very good performance for high contention workloads. Two versions of the paper could be found below.