Lazy Evaluation for Concurrent OLTP and Bulk Transactions

Existing concurrency control systems cannot execute transactions with overlapping updates concurrently. This is especially problematic for bulk updates, which usually overlap with all concurrent transactions. To solve this, we have developed a concurrency control mechanism based on lazy evaluation, which moves evaluation of operations from the writer to the reader. This allows readers to prioritize evaluation of those operations in which they are interested, without loss of atomicity of transactions. To handle bulk operations, we dynamically split large transactions into transactions on smaller parts of the data. In this paper we present an abstract lazy index structure for lazy transactions, and show how transactions can be encoded to effectively use this data structure. Moreover, we discuss evaluation strategies for lazy transactions, where trade-offs can be made between latency and throughput. To evaluate our approach, we have implemented a concurrent lazy trie, on which we performed a number of micro benchmarks.

[1]  Philip W. Trinder,et al.  A functional database , 1989 .

[2]  Marieke Huisman,et al.  Analysis of the Blocking Behaviour of Schema Transformations in Relational Database Systems , 2015, ADBIS.

[3]  Edward Fredkin,et al.  Trie memory , 1960, Commun. ACM.

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

[5]  Mikael Ronström On-Line Schema Update for a Telecom Database , 2000, ICDE.

[6]  Philip A. Bernstein,et al.  Concurrency Control in Distributed Database Systems , 1986, CSUR.

[7]  Irving L. Traiger,et al.  The notions of consistency and predicate locks in a database system , 1976, CACM.

[8]  Svein-Olaf Hvasshovd,et al.  Online, Non-blocking Relational Schema Changes , 2006, EDBT.

[9]  Martin Odersky,et al.  Concurrent tries with efficient non-blocking snapshots , 2012, PPoPP '12.

[10]  Xiaowei Sun,et al.  Online B-tree merging , 2005, SIGMOD '05.

[11]  Daniel J. Abadi,et al.  Lazy evaluation of transactions in database systems , 2014, SIGMOD Conference.

[12]  Carlo Curino,et al.  The PRISM Workwench: Database Schema Evolution without Tears , 2009, 2009 IEEE 25th International Conference on Data Engineering.

[13]  Kunle Olukotun,et al.  CCSTM: A Library-Based STM for Scala , 2010 .

[14]  Iulian Neamtiu,et al.  Improving Cloud Availability with On-the-fly Schema Updates , 2013, COMAD.

[15]  Phil Trinder,et al.  A functional database (databases) , 1989 .

[16]  Robert E. Tarjan,et al.  Planar point location using persistent search trees , 1986, CACM.

[17]  Peter Henderson,et al.  A lazy evaluator , 1976, POPL.

[18]  Simon Marlow,et al.  Comparing the performance of concurrent linked-list implementations in Haskell , 2009, DAMP '09.

[19]  Rudolf Bayer,et al.  Organization and maintenance of large ordered indexes , 1972, Acta Informatica.

[20]  Viktor Leis,et al.  The adaptive radix tree: ARTful indexing for main-memory databases , 2013, 2013 IEEE 29th International Conference on Data Engineering (ICDE).