高效查询重新优化与明智子查询选择
摘要:查询重新优化是一种自适应查询处理技术,它在查询执行的某些点重新调用优化器。其目标是通过在运行时收集的统计数据动态修正基数估计错误,以调整查询计划以提高整体性能。我们确定了现有重新优化算法中的一个关键弱点:它们的子查询划分和重新优化触发策略在很大程度上依赖于优化器的初始计划,而这个计划可能远离最优解。因此,我们提出了一种新的重新优化算法QuerySplit,它跳过了可能误导人的全局计划,而是直接从逻辑计划生成子查询作为基本的重新优化单元。通过开发一个优先执行较少 “有害” 子查询的成本函数,QuerySplit成功地延迟(有时避免)了复杂大连接的执行,以最大化其输入大小较小的概率。我们在PostgreSQL中实现了QuerySplit,并使用Join Order Benchmark将我们的解决方案与四个最先进的重新优化算法进行了比较。我们的实验证明,与第二优解相比,QuerySplit将基准执行时间缩短了35%。QuerySplit与最佳优化器之间的性能差异在4%以内。
作者:Junyi Zhao, Huanchen Zhang and Yihan Gao
论文ID:2202.12535
分类:Databases
分类简称:cs.DB
提交时间:2023-06-23