Self-diagnosing and self-healing indexes

  • Authors:
  • Goetz Graefe;Harumi Kuno;Bernhard Seeger

  • Affiliations:
  • Philipps-Universität Marburg;Philipps-Universität Marburg;Philipps-Universität Marburg

  • Venue:
  • DBTest '12 Proceedings of the Fifth International Workshop on Testing Database Systems
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

Transactional storage and indexing is the heart of every database, not only for performance and functionality but also for reliability and availability. For high concurrency, these components must be programmed carefully with short critical sections, a variety of consistent states with short transitions, etc. Many-core CPUs exacerbate these requirements. Testing software with 100s or 1, 000s of threads is very difficult. In order to test such code, we suggest verifying the B-tree structure in each traversal. With carefully designed tree structure and node contents, a root-to-leaf pass can verify all nodes along its path comprehensively, i. e., it can verify all B-tree invariants including its consistency constraints with respect to its siblings and cousins (defined below). Thus, instead of testing the index implementation by running a stress-test and verifying the B-tree structure and contents afterwards, i. e., instead of the traditional approach, the test execution itself verifies the structure frequently and efficiently. During testing prior to a software release, frequent comprehensive verification combined with fast access to all relevant log records permits efficient root cause analysis of test failures. In deployments after software release, frequent verification and fast access to log records permits automatic, reliable, and efficient recovery of the correct, up-to-date page contents. Our contribution is an index structure that gives reliable and efficient access to all relevant log records and thus enables root cause analysis during testing and automatic recovery after deployment.