Summary Lehman & Yao present a locking algorithm that provides high concurrency in that at most 3 nodes of the tree are locked at any one time on a write & no nodes are locked on a read. The algorithm requires a slight change to the b-tree, namely the addition of a right neighbor pointer (referred to as the ``link pointer'') and a key which names the maximum value stored under this node (the "high key"). Correctness is guaranteed partially through a well-ordered locking protocol.
The following algorithms are described and proofs of correctness are given.
The worst case for number of locks held (3) occurs when we need to traverse the parent node(s) because it has split since we last looked at it.