Efficient Multi-version Storage Engine for Main Memory Data Store

Multi-version storage engine is the fundamental component of modern main memory data store using the popular multiple version concurrency control (MVCC). The straightforward implementation of storage engine is to use a linked list to store multiple versions of an object. A read operation has to traverse the list for the specified version, which incurs pointer chasing. An optimization method implemented in HyPer is to store the current version in the object header, which is friendly to read the latest snapshot of data. However, a read operation still needs one extra pointer chasing in memory when accessing an object being updated. In this paper, we propose an efficient multi-version storage (EMS), a new storage engine for main memory data store. EMS embeds two latest versions in each object header, so that it can avoid the overhead of traversal of version list, especially in the update-intensive scenario. We present an implementation mechanism of widely used snapshot isolation level over EMS. The experimental results demonstrate that EMS outperforms the exiting multi-version storage engine of well-known main memory data stores in terms of throughput without excessive memory consumption.

[1]  Dan R. K. Ports,et al.  Serializable Snapshot Isolation in PostgreSQL , 2012, Proc. VLDB Endow..

[2]  Eddie Kohler,et al.  Fast Databases with Fast Durability and Recovery Through Multicore Parallelism , 2014, OSDI.

[3]  Alexander Zeier,et al.  HYRISE - A Main Memory Hybrid Storage Engine , 2010, Proc. VLDB Endow..

[4]  Alan Fekete,et al.  Multi-version Concurrency via Timestamp Range Conflict Management , 2012, 2012 IEEE 28th International Conference on Data Engineering.

[5]  Philip A. Bernstein,et al.  Optimizing Optimistic Concurrency Control for Tree-Structured, Log-Structured Databases , 2015, SIGMOD Conference.

[6]  Jignesh M. Patel,et al.  High-Performance Concurrency Control Mechanisms for Main-Memory Databases , 2011, Proc. VLDB Endow..

[7]  James C. Hoe,et al.  A Study of Pointer-Chasing Performance on Shared-Memory Processor-FPGA Systems , 2016, FPGA.

[8]  Andrew Pavlo,et al.  What's Really New with NewSQL? , 2016, SGMD.

[9]  Wolfgang Lehner,et al.  Efficient transaction processing in SAP HANA database: the end of a column store myth , 2012, SIGMOD Conference.

[10]  Andrew Pavlo,et al.  An Empirical Evaluation of In-Memory Multi-Version Concurrency Control , 2017, Proc. VLDB Endow..

[11]  J. T. Robinson,et al.  On optimistic methods for concurrency control , 1979, TODS.

[12]  Jim Gray,et al.  A critique of ANSI SQL isolation levels , 1995, SIGMOD '95.

[13]  Craig Freedman,et al.  Hekaton: SQL server's memory-optimized OLTP engine , 2013, SIGMOD '13.

[14]  Alfons Kemper,et al.  Fast Serializable Multi-Version Concurrency Control for Main-Memory Database Systems , 2015, SIGMOD Conference.

[15]  Eddie Kohler,et al.  Speedy transactions in multicore in-memory databases , 2013, SOSP.

[16]  Wook-Shin Han,et al.  Hybrid Garbage Collection for Multi-Version Concurrency Control in SAP HANA , 2016, SIGMOD Conference.