本技术公开了一种基于两阶段搜索的学习型查询优化器构建方法及装置,包括:通过基于马氏距离度量的适用域检测器,利用训练数据验证用户查询是否在优化器的适用域内;若不在适用域内,此查询将被交于底层的数据库管理系统进行处理和执行;若在适用域内,本方法将利用现有的基于束搜索的计划生成器生成最优的k个计划作为候选集,并利用数据增强后的执行计划训练挑选器;计划挑选器将利用回归模型预测候选计划的预计延时,从而选出最优查询计划,并交由数据库管理系统执行。本发明利用两阶段搜索和适用域检测的方式,提出了一种准确高效且鲁棒的查询优化器,拥有产出计划质量高、训练效率高、鲁棒性强等优点,具有广阔的应用场景。
背景技术
查询优化器是数据库管理系统的核心组件之一,能够根据所输入的用户查询,确定更加高效的执行计划,是深刻影响数据库查询处理能力的部件。其目标为输入的用户结构化查询语言(Structured Query Language,SQL)查询选择系统资源消耗(即执行代价,一般指执行时间)最低的物理执行计划。
由于对于同一个SQL 查询语句存在众多计算查询结果的执行方式,而不同的执行方式从执行时间的角度上看可能会相差好几个数量级,这使得执行计划的选择对数据库查询处理效率起到了至关重要的作用。然而由于业务复杂、SQL 逻辑繁琐、数据分布等信息难以获取等原因,数据库应用开发人员难以编写高效执行的 SQL 语句以及执行计划,这对查询优化器的性能提出了很高的要求。
现如今主要的数据库管理系统均采用了基于直方图、采样等统计信息的传统查询优化器。但传统查询优化器的设计主要基于理想的数据分布假设,而真实场景的数据分布难以满足该假设,导致传统优化器在实际应用中表现不佳。受到机器学习的优秀表征能力和学习能力的激励,近些年涌现了大量利用机器学习的学习型查询优化器,能够显著提升所产出执行计划的质量,但其鲁棒性有待提高,主要体现在:(1)在学习型查询优化器所依赖的代价模型中,误差是不可避免且具有传播性的这将影响查询优化器的有效性。(2)现有的学习型查询优化器缺少定义适用范围,这将影响系统的稳定性。(3)高昂的训练代价也影响了这类优化器的可扩展性。因此,如何设计鲁棒的查询优化算法,满足系统稳定、有效和可扩展的要求是首要挑战。
实现思路