Improving in-memory database index performance with Intel® Transactional Synchronization Extensions

The increasing number of cores every generation poses challenges for high-performance in-memory database systems. While these systems use sophisticated high-level algorithms to partition a query or run multiple queries in parallel, they also utilize low-level synchronization mechanisms to synchronize access to internal database data structures. Developers often spend significant development and verification effort to improve concurrency in the presence of such synchronization. The Intel® Transactional Synchronization Extensions (Intel® TSX) in the 4th Generation Core™ Processors enable hardware to dynamically determine whether threads actually need to synchronize even in the presence of conservatively used synchronization. This paper evaluates the effectiveness of such hardware support in a commercial database. We focus on two index implementations: a B+Tree Index and the Delta Storage Index used in the SAP HANA® database system. We demonstrate that such support can improve performance of database data structures such as index trees and presents a compelling opportunity for the development of simpler, scalable, and easy-to-verify algorithms.

[1]  Rudolf Bayer,et al.  Concurrency of operations on B-trees , 1994, Acta Informatica.

[2]  James R. Goodman,et al.  Transactional lock-free execution of lock-based programs , 2002, ASPLOS X.

[3]  Kihong Kim,et al.  Cache-Conscious Concurrency Control of Main-Memory Indexes on Shared-Memory Multiprocessor Systems , 2001, VLDB.

[4]  Kathryn S. McKinley,et al.  Hoard: a scalable memory allocator for multithreaded applications , 2000, SIGP.

[5]  S. B. Yao,et al.  Efficient locking for concurrent operations on B-trees , 1981, TODS.

[6]  David A. Wood,et al.  Performance Pathologies in Hardware Transactional Memory , 2007, IEEE Micro.

[7]  Goetz Graefe,et al.  A survey of B-tree locking techniques , 2010, TODS.

[8]  Mark D. Hill Is transactional memory an oxymoron? , 2008, Proc. VLDB Endow..

[9]  Bradley C. Kuszmaul,et al.  Concurrent Cache-Oblivious B-Trees Using Transactional Memory , 2006 .

[10]  Yehoshua Sagiv Concurrent Operations on B*-Trees with Overtaking , 1986, J. Comput. Syst. Sci..

[11]  Nir Shavit,et al.  Software transactional memory , 1995, PODC '95.

[12]  James R. Goodman,et al.  Speculative lock elision: enabling highly concurrent multithreaded execution , 2001, MICRO.

[13]  Maurice Herlihy,et al.  Transactional Memory: Architectural Support For Lock-free Data Structures , 1993, Proceedings of the 20th Annual International Symposium on Computer Architecture.

[14]  Pradeep Dubey,et al.  PALM: Parallel Architecture-Friendly Latch-Free Modifications to B+ Trees on Many-Core Processors , 2011, Proc. VLDB Endow..

[15]  James R. Larus,et al.  Transactional Memory, 2nd edition , 2010, Transactional Memory.

[16]  Philip A. Bernstein,et al.  Atomic Transactional Execution in Hardware: A New High-Performance Abstraction for Databases? , 2003 .

[17]  Michael Stonebraker,et al.  Readings in Database Systems , 1988 .

[18]  Mark Moir,et al.  Early experience with a commercial hardware transactional memory implementation , 2009, ASPLOS.

[19]  Christopher J. Hughes,et al.  Performance evaluation of Intel® Transactional Synchronization Extensions for high-performance computing , 2013, 2013 SC - International Conference for High Performance Computing, Networking, Storage and Analysis (SC).

[20]  Eli Upfal,et al.  Balanced Allocations , 1999, SIAM J. Comput..

[21]  R. Bayer,et al.  Organization and maintenance of large ordered indices , 1970, SIGFIDET '70.

[22]  Goetz Graefe,et al.  Foster b-trees , 2012, TODS.