making b+- trees cache conscious in main memory
Previous research has shown that cache behavior is important for main memory index structures. Cache conscious index structures such as Cache Sensitive Search Trees (CSS-Trees) perform lookups much faster than binary search and T-Trees. However, CSS-Trees are designed for decision support workloads with relatively static data. Although B + -Trees are more cache conscious than binary search and T-Trees, their utilization of a cache line is low since half of the space is used to store child pointers. Nevertheless, for applications that require incremental updates, traditional B + -Trees perform well. Our goal is to make B + -Trees as cache conscious as CSS-Trees without increasing their update cost too much. We propose a new indexing technique called Cache Sensitive B + -Trees (CSB + -Trees). It is a variant of B + -Trees that stores all the child nodes of any given node contiguously, and keeps only the address of the first child in each node. The rest of the children can be found by adding an offset to that address. Since only one child pointer is stored explicitly, the utilization of a cache line is high. CSB + -Trees support incremental updates in a way similar to B + -Trees. We also introduce two variants of CSB + -Trees. Segmented CSB + -Trees divide the child nodes into segments. Nodes within the same segment are stored contiguously and only pointers to the beginning of each segment are stored explicitly in each node. Segmented CSB + -Trees can reduce the copying cost when there is a split since only one segment needs to be moved. Full CSB + -Trees preallocate space for the full node group and thus reduce the split cost. Our performance studies show that CSB + -Trees are useful for a wide range of applications.
trees cache memorialized research search behavior indexing sensitive performance decision support support data space pointers applications incremental update cost addressing children segmentation group