June 15, 2010
Oguzhan Ozmen, Kenneth Salem, Jiri Schindler, and Steve Daniel.
In this paper, we address the problem of generating an optimized layout of a given set of database objects.
The performance of a database system depends strongly on the layout of database objects, such as indexes or tables, onto the underlying storage devices. A good layout will both balance the I/O workload generated by the database system and avoid the performance-degrading interference that can occur when concurrently accessed objects are stored on the same volume. In current practice, layout is typically guided by heuristics and rules of thumb, such as separating indexes and tables or striping all objects across all of the available storage devices. However, these guidelines may give poor results. In this paper, we address the problem of generating an optimized layout of a given set of database objects. Our layout optimizer goes beyond generic guidelines by making use of a description of the database system's I/O activity. We formulate the layout problem as a non-linear programming (NLP) problem and use the I/O description as input to an NLP solver. Our layout optimization technique, which is incorporated into a database layout advisor, identifies a layout that both balances load and avoids interference. We evaluate experimentally the efficacy of our approach and demonstrate that it can quickly identify non-trivial optimized layouts.
In Proceedings of the ACM Special Interest Group on Management of Data Conference 2010 (SIGMOD ’10)
The definitive version of the paper can be found at: https://dl.acm.org/citation.cfm?doid=1807167.1807268.