Concurrency control and recovery for balanced B-link trees

Abstract.In this paper we present new concurrent and recoverable B-link-tree algorithms. Unlike previous algorithms, ours maintain the balance of the B-link tree at all times, so that a logarithmic time bound for a search or an update operation is guaranteed under arbitrary sequences of record insertions and deletions. A database transaction can contain any number of operations of the form “fetch the first (or next) matching record”, “insert a record”, or “delete a record”, where database records are identified by their primary keys. Repeatable-read-level isolation for transactions is guaranteed by key-range locking. The algorithms apply the write-ahead logging (WAL) protocol and the steal and no-force buffering policies for index and data pages. Record inserts and deletes on leaf pages of a B-link tree are logged using physiological redo-undo log records. Each structure modification such as a page split or merge is made an atomic action by keeping the pages involved in the modification latched for the (short) duration of the modification and the logging of that modification; at most two B-link-tree pages are kept X-latched at a time. Each structure modification brings the B-link tree into a structurally consistent and balanced state whenever the tree was structurally consistent and balanced initially. Each structure modification is logged using a single physiological redo-only log record. Thus, a structure modification will never be undone even if the transaction that gave rise to it eventually aborts. In restart recovery, the redo pass of our ARIES-based recovery protocol will always produce a structurally consistent and balanced B-link tree, on which the database updates by backward-rolling transactions can always be undone logically, when a physical (page-oriented) undo is no longer possible.

[1]  David B. Lomet,et al.  MLR: a recovery method for multi-level systems , 1992, SIGMOD '92.

[2]  Ing-Ray Chen,et al.  Performance analysis of a periodic data reorganization algorithm for concurrent Blink-trees in database systems , 1995, SAC '95.

[3]  Andrea Zisman,et al.  New Concurrency Control Algorithms for Accessing and Compacting B-Trees , 1994, VLDB.

[4]  Gio Wiederhold,et al.  Concurrent use of B-trees with variable-length entries , 1988, SGMD.

[5]  C. Mohan,et al.  ARIES/IM: an efficient and high concurrency index management method using write-ahead logging , 1992, SIGMOD '92.

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

[7]  Stergios Stergiou,et al.  View Serializable Updates of Concurrent Index Structures , 2001, DBPL.

[8]  C. Mohan Concurrency Control and Recovery Methods for B+-Tree Indexes: ARIES/KVL and ARIES/IM , 1996, Performance of Concurrency Control Mechanisms in Centralized Database Systems.

[9]  Michael J. Carey,et al.  Performance of B+ tree concurrency control algorithms , 1993, The VLDB Journal.

[10]  Alexandros Biliris Operation specific locking in B-trees , 1987, PODS '87.

[11]  David B. Lomet,et al.  Concurrency and recovery for index trees , 1997, The VLDB Journal.

[12]  Jayant R. Haritsa,et al.  Index Concurrency Control in Firm Real-Time Database Systems , 1995, VLDB.

[13]  Derick Wood,et al.  A New Method for Concurrency in B-Trees , 1982, IEEE Transactions on Software Engineering.

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

[15]  Jayant R. Haritsa,et al.  Index Concurrency Control in Firm Real-Time DBMS , 1996 .

[16]  David B. Lomet,et al.  Access method concurrency with recovery , 1992, SIGMOD '92.

[17]  C. Mohan,et al.  ARIES/KVL: A Key-Value Locking Method for Concurrency Control of Multiaction Transactions Operating on B-Tree Indexes , 1990, VLDB.

[18]  Ibrahim Jaluta,et al.  B-tree concurrency control and recovery in a client-server database management system , 2002 .

[19]  C. Mohan,et al.  Concurrency and recovery in generalized search trees , 1997, SIGMOD '97.

[20]  Mark Sullivan,et al.  An index implementation supporting fast recovery for the POSTGRES storage system , 1992, [1992] Eighth International Conference on Data Engineering.

[21]  Derick Wood,et al.  Concurrency control in database structures with relaxed balance , 1987, PODS '87.

[22]  Chilukuri K. Mohan Performance of Concurrency Control Mechanisms in Centralized Database Systems , 1995 .

[23]  Christos H. Papadimitriou,et al.  The Theory of Database Concurrency Control , 1986 .

[24]  Andreas Reuter,et al.  Transaction Processing: Concepts and Techniques , 1992 .

[25]  Yoav Raz,et al.  Concurrency Control in B+-Trees Databases Using Preparatory Operations , 1985, VLDB.

[26]  Wiebren de Jonge,et al.  Concurrent access to B-trees , 1990, Proceedings. PARBASE-90: International Conference on Databases, Parallel Architectures, and Their Applications.

[27]  Dennis Shasha,et al.  A Symmetric Concurrent B-Tree Algorithm , 2011, Fall Joint Computer Conference.

[28]  Hamid Pirahesh,et al.  ARIES: a transaction recovery method supporting fine-granularity locking and partial rollbacks using write-ahead logging , 1998 .

[29]  Ada Wai-Chee Fu,et al.  Concurrency control of nested transactions accessing B-trees , 1989, PODS.