Prefetch R-tree: A Disk and Cache Optimized Multidimensional Index Structure

Prefetch R-tree: 디스크와 CPU 캐시에 최적화된 다차원 색인 구조

  • 박명선 (KT BcN본부 제어플랫폼담당 유무선통합인증개발부)
  • Published : 2006.08.01


R-trees have been traditionally optimized for the I/O performance with the disk page as the tree node. Recently, researchers have proposed cache-conscious variations of R-trees optimized for the CPU cache performance in main memory environments, where the node size is several cache lines wide and more entries are packed in a node by compressing MBR keys. However, because there is a big difference between the node sizes of two types of R-trees, disk-optimized R-trees show poor cache performance while cache-optimized R-trees exhibit poor disk performance. In this paper, we propose a cache and disk optimized R-tree, called the PR-tree (Prefetching R-tree). For the cache performance, the node size of the PR-tree is wider than a cache line, and the prefetch instruction is used to reduce the number of cache misses. For the I/O performance, the nodes of the PR-tree are fitted into one disk page. We represent the detailed analysis of cache misses for range queries, and enumerate all the reasonable in-page leaf and nonleaf node sizes, and heights of in-page trees to figure out tree parameters for best cache and I/O performance. The PR-tree that we propose achieves better cache performance than the disk-optimized R-tree: a factor of 3.5-15.1 improvement for one-by-one insertions, 6.5-15.1 improvement for deletions, 1.3-1.9 improvement for range queries, and 2.7-9.7 improvement for k-nearest neighbor queries. All experimental results do not show notable declines of the I/O performance.


  1. Boncz, P. A., Manegold, S. and Kersten, M. L., 'Database Architecture Optimized for the New Bottleneck: Memory Access,' In Proceedings of the 25th VLDB, pp.54-65, 1999
  2. Rao, J. and Ross, K A., 'Cache Conscious Indexing for Decision-Support in Main Memory,' In Proceedings of 25th International Conference on Very Large Data Bases, pp.78-89, 1999
  3. Rao, J. and Ross, K. A., 'Making B+- Trees Cache Conscious in Main Memory,' In Proceedings of the 2000 ACM SIGMOD International Conference, pp.475-486, 2000
  4. Chen, S., Gibbons, P. B. and Mowry, T. C., 'Improving Index Performance through Prefetching,' In Proceedings of the 2001 ACM SIGMOD International Conference, pp.235-246, 2001
  5. Chen, S., Gibbons, P. B., Mowry, T. C. and Valentin, G., 'Fractal Prefetching B+- Trees: Optimizing Both Cache and Disk Performance,' In Proceedings of the 2002 ACM SIGMOD International Conference, pp.157-168, 2002
  6. Kim, K., Cha, S. and Kwon, K., 'Optimizing Multi-dimensional Index Trees for Main Memory Access,' In Proceedings of the 2001 ACM SIGMOD International Conference, pp.139-150, 2001
  7. Leutenegger, S. T, Edgington, J. M. and Lopez, M. A., 'STR: A Simple and Efficient Algorithm for R-Tree Packing,' In Proceedings of the Thirteenth International Conference on Data Engineering, pp.497-506, 1997
  8. Guttman, A., 'R-Trees: A Dynamic Index Structure for Spatial Searching,' SIGMOD'84, Proceedings of Annual Meeting, pp.47-57, 1984
  9. Roussopoulos, N., Kelley, S. and Vincent, F., 'Nearest Neighbor Queries,' In Proceedings of the 1995 ACM SIGMOD, pp.71-79, 1995
  10. Kamel, I. and Faloutsos, C., 'On Packing R-trees,' in Proceedings of the 1993 ACM CIKM Conference, pp.490-499, 1993
  11. Leutenegger, S. T. and Lopez, M. A., 'The Effect of Buffering on the Performance of R-Trees,' In Proceedings of the 14th International Conference on Data Engineering, pp.164-171, 1998
  12. Beckmann, N., Kriegel, H.-P., Schneider, R. and Seeger, B., 'The R*-Tree; An Efficient and Robust Access Method for Points and Rectangles,' In Proceedings of the 1990 ACM SIGMOD, pp.322-331, 1990
  13. Dongarra, J., London, K., Moore, S., Mucci, P. and Terpstra, D., 'Using PAPI for Hardware Performance Monitoring on Linux Systems,' In Proceedings of the 2nd LCI International Conference on Linux Clusters: The HPC Revolution 2001