Product Documentation

c-treeACE V10.0 Update Guide

Previous Topic

Next Topic

Key-Level Lock logic

Performance was enhanced when the calling thread owns all the pending key-level locks.

In some situations repeated calls were made to a function which attempts to resolve key-level locks without any cleanup occurring. This cleanup function checks each of the key-level locks in a leaf node to determine if the associated transactions have terminated. When a key-level lock is associated with a transaction that has been committed or aborted, the key-level lock is removed and the key value stays (committing an add or aborting a delete) or is removed (committing a delete or aborting an add). But if a thread is executing a long transaction, it may be repeatedly calling this cleanup routine without any effect when the key-level locks for a node all belong to the calling thread.

We now immediately detect when all the key-level locks belong to the calling thread, and return without checking each of the key-level locks. Also, we have enhanced the key-level locking cleanup performance when calling thread is executing a NXTKEY operation. To improve the efficiency of ctclup() when it is called as part of a NXTKEY() operation, ctclup() has been modified to only perform the cleanup necessary to satisfy the NXTKEY operation.

TOCIndex