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.
Similar content being viewed by others
References
Bernstein P, Hadzilacos V, Goodman N (1987) Concurrency control and recovery in database systems. Addison-Wesley, Reading, MA
Biliris A (1987) Operation specific locking in B-trees. In: Proc. 1987 ACM international conference on principles of database systems, pp 159-169
Chen I, Hassan S (1995) Performance analysis of a periodic data reorganization algorithm for concurrent B-link trees in database systems. In: Proc. 1995 ACM symposium on applied computing, pp 40-45
Cosmadakis S, Ioannidou K, Stergiou S (2001) View serializable updates of concurrent index structures. In: Proc. 2001 DBPL international workshop on database programming languages, pp 247-262
De Jonge W, Schijf A (1990) Concurrent access to B-trees. In: Proc. 1990 PARBASE international conference on databases, parallel architectures and their applications, pp 312-320
Fu A, Kameda T (1989) Concurrency control for nested transactions accessing B-trees. In: Proc. ACM SIGACT-SIGMOD-SIGART international conference on management of data, pp 270-285
Gray J, Reuter A (1993) Transaction processing: concepts and techniques. Morgan Kaufmann, San Francisco
Goyal B, Haritsa J, Seshadri S, Srinivasan V (1995) Index concurrency control in firm real-time DBMS. In: Proc. 21st VLDB conference, pp 146-157
Jaluta I (2002) B-tree concurrency control and recovery in a client-server database management system. Ph.D. thesis and report TKO-A37/02, Department of Computer Science and Engineering, Helsinki University of Technology. http://lib.hut.fi/Diss/2002/isbn9512257068/
Keller AM, Wiederhold G (1988) Concurrent use of B-trees with variable-length entries. SIGMOD Rec 17(2):89-90
Kornacker M, Mohan C, Hellerstein J (1997) Concurrency and recovery in generalized search trees. In: Proc. ACM SIGMOD international conference on management of data, pp 62-72
Kwong Y, Wood D (1982) A new method for concurrency in B-trees. IEEE Trans Softw Eng 8:211-222
Lanin V, Shasha D (1986) A symmetric concurrent B-tree algorithm. In: Proc. fall joint computer conference, pp 380-389
Lehman P, Yao S (1981) Efficient locking for concurrent operations on B-trees. ACM Trans Database Sys 6:650-670
Lomet D (1992) MLR: a recovery method for multi-level systems. In: Proc. ACM SIGMOD international conference on management of data, pp 185-194
Lomet D, Salzberg B (1992)) Access method concurrency with recovery. In: Proc. ACM SIGMOD international conference on management of data, pp 351-360
Lomet D, Salzberg B (1997) Concurrency and recovery for index trees. VLDB J 6:224-240
Mohan C (1989) ARIES/KVL: a key-value locking method for concurrency control of multi-action transactions operation on B-tree indexes. IBM Research Report RJ7008, IBM Almaden Research Center
Mohan C (1990) ARIES/KVL: a key-value locking method for concurrency control of multi-action transactions operation on B-tree indexes. In: Proc. 16th VLDB conference, pp 392-405
Mohan C (1996) Concurrency control and recovery methods for B\(\pm\)tree indexes: ARIES/KVL and ARIES/IM. In: Kumar V (ed) Performance of concurrency control mechanisms in centralized database systems. Prentice-Hall, Upper Saddle River NJ, pp 248-306
Mohan C, Levine F (1992) ARIES/IM: an efficient and high concurrency index management method using write-ahead logging. In: Proc. ACM SIGMOD international conference on management of data, pp 371-380
Mohan C, Haderle D, Lindsay B, Pirahesh H, Schwarz P (1992) ARIES: a transaction recovery method supporting fine-granularity locking and partial rollbacks using write-ahead logging. ACM Trans Database Sys 17:94-162
Mond Y, Raz Y (1985) Concurrency control in B\(\pm \)tree databases using preparatory operations. In: Proc. 11th VLDB conference, pp 331-334
Nurmi O, Soisalon-Soininen E, Wood D (1987) Concurrency control in database structures with relaxed balance. In: Proc. ACM international conference on principles of database systems, pp 170-176
Papadimitriou C (1986) The theory of database concurrency control. Computer Science Press, Rockville, MD
Sagiv Y (1986) Concurrent operations on B*-trees with overtaking. J Comput Sys Sci 33:275-296
Setzer V, Zisman A (1994) New concurrency control algorithms for accessing and compacting B-trees. In: Proc. 20th VLDB conference, pp 238-248
Srinivasan V, Carey M (1991)) Performance of B\(\pm \)tree concurrency control algorithms. In: Proc. ACM SIGMOD international conference on management of data, pp 416-425
Srinivasan V, Carey M (1993) Performance of B\(\pm \)tree concurrency control algorithms. VLDB J 2:361-406
Sullivan M, Olson M (1992) An index implementation supporting fast recovery for the POSTGRES storage system. In: Proc. 8th IEEE data engineering conference, pp 293-300
Author information
Authors and Affiliations
Corresponding author
Additional information
Received: 8 October 2003, Accepted: 19 February 2004, Published online: 14 September 2004
Edited by: B. Seeger
Rights and permissions
About this article
Cite this article
Jaluta, I., Sippu, S. & Soisalon-Soininen, E. Concurrency control and recovery for balanced B-link trees. The VLDB Journal 14, 257–277 (2005). https://doi.org/10.1007/s00778-004-0140-6
Issue Date:
DOI: https://doi.org/10.1007/s00778-004-0140-6