Product Documentation

FairCom RTG V3 Update Guide

Previous Topic

Next Topic

Faster Indexing from Locking, Node Pruning, and Sorting Optimizations

Improved performance of Server index node lock

The FairCom Server logic has been enhanced to improve performance for concurrent connections that are updating the same index file. The performance of FairCom Server index node lock request collision handling has been improved by adjusting the logic to be more efficient.

This change has also been applied to data record write and read lock collision handling.

Improved scalability for high concurrency index leaf node reads

Performance analysis identified contention on index leaf node reads with many concurrent connections. A new configuration option improves scalability under these conditions. Specific testing on a Solaris system with many CPUs clearly shows large improvement. This modification affects the following index types:

  1. An index that uses key compression.
  2. An index that is under transaction control.

With this configuration enabled, FairCom Server acquires a read lock on a leaf node if the index does not use key compression. If it finds that the node contains transaction marks, it releases the read lock and acquires a write lock on the node.

The FairCom Server configuration option LEAF_NODE_READ_LOCK accepts values of YES (to turn on this feature, which is the default) and NO (to turn off this feature). This configuration option is dynamically configurable at runtime by calling the ctSETCFG() function or using the ctadmn utility's option (menu option 10, and then menu option 10, Change the specified configuration option, again) to change a server configuration option value.

The graph below shows specific performance improvement. The green line is our starting point with a proprietary test, which is roughly 1,000 seconds at 250 concurrent connections. After our change, the performance characteristics on Solaris is around 100 seconds, an order of magnitude improvement.

Extend leaf node read lock optimization to moving right or left at leaf level

When key lookup operations move right or left at the leaf level, the call to search the index cache for an index buffer that holds the specified node was not taking advantage of the leaf node read lock optimization. The logic has been modified to do this. This change could boost performance of key lookups when an index has empty leaf nodes for example.

TOCIndex