A significant performance improvement has been introduced offering scalability benefits for reads of transaction-controlled files. A commit read lock is a record lock that the c-treeACE Server automatically acquires when reading a record from a transaction-controlled file if the reader does not request a read or write lock on the record. The lock is held while the record is read from c-treeACE Server’s data cache.
c-treeACE Server uses a commit read lock to guarantee that the reader reads a consistent version of the record from the data cache. In a performance test involving many clients reading data records without acquiring a lock, we found significant contention on a c-treeACE Server file-specific mutex for commit read lock operations. But a commit read lock is not needed when a data record header and body occupy the same cache page, provided that c-treeACE Server reads the record header and body from the cache in a single call and that c-tree writes the header and body to the cache in a single call.
Now we improve scalability while still guaranteeing record read consistency by reducing the need for commit read locks. c-treeACE Server replaces the separate data record header and body writes to the data cache with a single write to the data cache and only acquires a commit read lock when the data record spans two cache pages. Records that reside in a single cache page are read with no commit read lock overhead. Combining the data record header and body write also improves performance by reducing the number of calls to write to the data cache when updating a record.