原文链接:http://dbgroup.cs.tsinghua.edu.cn/ligl/papers/optimizer-vldb23.pdf

总结

A Hybrid Query Optimizer for Query Plan Selection“提出了一种混合优化器,它结合了传统基于成本的优化器和基于学习的优化器的优点,以解决每种类型的局限性。混合优化器通过利用基于学习的方法中的提示来生成高质量的候选计划,然后使用基于成本的方法补充提示以生成完整的计划。该文提出一种基于不确定性的最优计划选择模型,通过预测每个计划的执行时间和不确定性来评估和选择最佳计划。解决的主要挑战是如何使用提示生成高质量的候选计划,以及如何评估和选择最佳计划。该论文的贡献包括自适应混合优化器的设计、使用蒙特卡洛树搜索的基于提示的候选计划生成方法、基于不确定性的最优计划选择方法,以及与现有基线相比性能有所提高的实验结果。关键点包括:

  • 传统的基于成本的优化程序可能无法为复杂查询生成高质量的计划
  • 基于学习的优化器在处理动态工作负载时遇到困难
  • 结合两种类型优势的混合优化器的建议
  • 生成高质量候选人计划和选择最佳计划的挑战
  • 引入基于提示的候选生成和基于不确定性的计划选择
  • 贡献包括自适应混合优化器、基于提示的方法和基于不确定性的选择
  • 实验结果显示,与 PostgreSQL 相比,性能有所提高

混合优化器如何解决传统优化器的局限性?

混合优化器通过使用提示结合基于成本和基于学习的优化器的优势,解决了传统优化器的局限性。传统的优化器(如基于成本的优化器)可能会生成成本小但执行时间估计不准确的计划,而基于学习的优化器可能会选择具有良好估计性能但缺乏训练示例的计划,这可能会导致次优计划。混合优化器利用前导提示(联接顺序的较短前缀)为计划推荐良好的前缀。然后,基于成本的优化器使用这些提示来生成性能相对较好的候选计划,从而解决成本估算不准确和缺乏训练示例的局限性。此外,混合优化器使用基于不确定性的最优计划选择模型来预测每个候选计划的执行时间和不确定性,从而允许根据这两个因素选择最佳计划通过将提示和不确定性感知计划选择的优势相结合,混合优化器可以生成性能良好的查询计划,即使在动态工作负载方案中和查询不在分布中时

什么是引导提示,它们如何改进计划建议?

前导提示是部分前缀计划,可为查询优化器生成完整的查询计划提供指导。它们在各种数据库系统(如 PostgreSQL、MySQL 和 Oracle)中受支持。前导提示指定查询的联接表序列,帮助优化程序扩展此提示并生成完整的计划。例如,DBA 可以通过提供前导提示来指定应首先在查询中联接某些表。此提示会影响生成的计划中表的联接顺序。 引导提示通过引导优化程序生成性能良好的查询计划来改进计划建议。它们通过提供有关表联接顺序的提示来帮助选择良好的联接顺序,这可能会显著影响查询执行的性能。通过利用引导提示,优化器可以有效地探索不同的连接顺序可能性并生成高质量的计划。此外,前导提示通过影响基于指定连接序列的计划生成过程来促进最佳计划的选择

前导提示如何影响查询计划生成过程?

前导提示通过向优化程序提供指导来确定查询中表的联接顺序,从而影响查询计划生成过程。通过为查询指定联接表序列,DBA 可以使用前导提示来影响优化程序生成高效的查询计划。优化器扩展前导提示以创建完整的计划,同时考虑指定的连接序列。本指南可帮助优化程序有效地探索不同的联接顺序可能性并生成高质量的计划。此外,引导提示通过影响基于指定连接序列的计划生成过程,在改进计划建议方面起着至关重要的作用。它们通过指导优化器生成性能良好的查询计划来帮助选择最佳计划。此外,前导提示有助于选择良好的联接顺序,这会显著影响查询执行的性能