Skip to main content
Log in

Concurrency control and recovery for balanced B-link trees

  • Published:
The VLDB Journal Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Bernstein P, Hadzilacos V, Goodman N (1987) Concurrency control and recovery in database systems. Addison-Wesley, Reading, MA

  2. Biliris A (1987) Operation specific locking in B-trees. In: Proc. 1987 ACM international conference on principles of database systems, pp 159-169

  3. 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

  4. 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

  5. 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

  6. 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

  7. Gray J, Reuter A (1993) Transaction processing: concepts and techniques. Morgan Kaufmann, San Francisco

    MathSciNet  Google Scholar 

  8. 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

  9. 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/

  10. Keller AM, Wiederhold G (1988) Concurrent use of B-trees with variable-length entries. SIGMOD Rec 17(2):89-90

    Google Scholar 

  11. 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

  12. Kwong Y, Wood D (1982) A new method for concurrency in B-trees. IEEE Trans Softw Eng 8:211-222

    MATH  Google Scholar 

  13. Lanin V, Shasha D (1986) A symmetric concurrent B-tree algorithm. In: Proc. fall joint computer conference, pp 380-389

  14. Lehman P, Yao S (1981) Efficient locking for concurrent operations on B-trees. ACM Trans Database Sys 6:650-670

    Article  MATH  Google Scholar 

  15. Lomet D (1992) MLR: a recovery method for multi-level systems. In: Proc. ACM SIGMOD international conference on management of data, pp 185-194

  16. Lomet D, Salzberg B (1992)) Access method concurrency with recovery. In: Proc. ACM SIGMOD international conference on management of data, pp 351-360

  17. Lomet D, Salzberg B (1997) Concurrency and recovery for index trees. VLDB J 6:224-240

    Article  Google Scholar 

  18. 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

  19. 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

  20. 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

  21. 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

  22. 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

    Article  Google Scholar 

  23. Mond Y, Raz Y (1985) Concurrency control in B\(\pm \)tree databases using preparatory operations. In: Proc. 11th VLDB conference, pp 331-334

  24. 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

  25. Papadimitriou C (1986) The theory of database concurrency control. Computer Science Press, Rockville, MD

  26. Sagiv Y (1986) Concurrent operations on B*-trees with overtaking. J Comput Sys Sci 33:275-296

    Article  MathSciNet  MATH  Google Scholar 

  27. Setzer V, Zisman A (1994) New concurrency control algorithms for accessing and compacting B-trees. In: Proc. 20th VLDB conference, pp 238-248

  28. 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

  29. Srinivasan V, Carey M (1993) Performance of B\(\pm \)tree concurrency control algorithms. VLDB J 2:361-406

    Google Scholar 

  30. 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

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Ibrahim Jaluta.

Additional information

Received: 8 October 2003, Accepted: 19 February 2004, Published online: 14 September 2004

Edited by: B. Seeger

Rights and permissions

Reprints 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

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00778-004-0140-6

Keywords:

Navigation