MiniOptimizer: A SIMPLIFIED RELATIONAL QUERY OPTIMIZER
DOI:
https://doi.org/10.24867/29BE10GravaraKeywords:
Relational query optimizer, SQL, cardinality estimation, database management systemsAbstract
This paper presents MiniOptimizer, a simplified relational query optimizer, with the aim of practically demonstrating the theoretical foundations of query optimization. Developed in the C# programming language, MiniOptimizer supports basic SQL operations and uses MiniQL, a specially designed query language. The paper covers the structure of the MiniOptimizer tool, including the parser, logical and physical execution plan, cardinality estimator, and data catalog. The optimization process includes parsing MiniQL queries, creating and transforming a logical plan, optimizing the join order, and choosing the most favorable physical execution plan. One of the contributions of this work is enhancing the understanding of query optimization techniques through the development of MiniOptimizer as an educational tool, which can serve as a foundation for further research and the development of more advanced database management systems.
References
[2] Graefe, Goetz. “The Volcano optimizer generator: extensibility and efficient search.” Proceedings of IEEE 9th International Conference on Data Engineering (1993): 209-218.
[3] Selinger, Patricia G. et al. “Access path selection in a relational database management system.” ACM SIGMOD Conference (1979).
[4] Zongheng Yang et al. Balsa: Learning a query optimizer without expert demonstrations. In Proceedings of the 2022 International Conference on Management of Data, SIGMOD/PODS ’22. ACM, June 2022.