solidDB®’s indexing system consists of two storage structures:
▪The Bonsai Tree, which stores new data in central memory, and
▪The main storage tree, which stores more stable data.
As the Bonsai Tree performs concurrency control, storing delete, insert, and update operations, as well as key values, it merges new committed data to the storage tree as a highly-optimized batch insert. This offers significant I/O optimization and load balancing.
You can adjust the number of index inserts made in the database that cause the merge process to start. The merge interval is controlled with the General.MergeInterval parameter. For example:
MergeInterval = 1000
Normally the recommended setting is the default value, which is cache size dependent. The default is calculated dynamically from the cache size, so that only part of the cache is used for the Bonsai Tree. If you change the merge interval, be sure that the cache is large enough to accommodate the Bonsai Tree. The longer the merge interval is (that is, the more data that is stored in memory before being moved to the main storage tree), the larger the cache needs to be.
Notes
▪If the merge interval setting is too big to allow the Bonsai Tree to fit into cache, then it is flushed partially to the disk; this has an adverse affect on performance. Hence, avoid setting merge intervals that are too large. On a diskless system, the Bonsai Tree fills the available memory and the diskless server runs out of memory.
▪Although the server has higher performance if merge intervals are less frequent (that is, batch inserts are larger), you might also see less consistent response times. If your highest priority is not overall throughput but to minimize the longest response time instead, you might want to make merge intervals more frequent rather than less frequent. More frequent merges reduce the worst case delays that interactive users can experience.