Prefetching J(+)-Tree: A Cache-Optimized Main Memory Database Index Structure
As the speed gap between main memory and modern processors continues to widen, the cache behavior becomes more important for main memory database systems (MMDBs). Indexing technique is a key component of MMDBs. Unfortunately, the predominant indexes - B(+)-trees and T-trees - have been shown to utilize cache poorly, which triggers the development of many cache-conscious indexes, such as CSB(+)-trees and pB(+)-trees. Most of these cache-conscious indexes are variants of conventional B(+)-trees, and have better cache performance than B(+)-trees. In this paper, we develop a novel J(+)-tree index, inspired by the Judy structure which is an associative array data structure, and propose a more cache-optimized index - Prefetching J(+)-tree (pJ(+)-tree), which applies prefetching to J(+)-tree to accelerate range scan operations. The J(+)-tree stores all the keys in its leaf nodes and keeps the reference values of leaf nodes in a Judy structure, which makes J(+)-tree not only hold the advantages of Judy (such as fast single value search) but also outperform it in other aspects. For example, J(+)-trees can achieve better performance on range queries than Judy. The pJ(+)-tree index exploits prefetching techniques to further improve the cache behavior of J(+)-trees and yields a speedup of 2.0 on range scans. Compared with B(+)-trees, CSB(+)-trees, pB(+)-trees and T-trees, our extensive experimental study shows that pJ(+)-trees can provide better performance on both time (search, scan, update) and space aspects.
prefetching main memory database index structure pj(+)-tree cache conscious