关键词:
数据库管理系统
查询优化器
机器学习
深度学习
排序学习
摘要:
查询优化器对于提高数据库管理系统(DBMS)的执行性能至关重要。传统的查询优化器通过计划枚举产生候选查询执行计划,然后利用基数估计和代价模型选择执行代价最低的计划。然而,在处理复杂查询时,由于难以准确预测其代价或执行延迟,导致非最优解的选择。最近,利用人工智能技术来优化数据库查询优化器已成为研究热点。机器学习模型通过分析历史查询数据学习查询特征与执行代价的关系,为新查询提供更准确的代价估计,从而优化查询计划选择,提升查询执行效率。尽管如此,当前研究仍面临两大挑战:首先,传统神经网络模型(如CNN或RNN)在提取查询计划的复杂特征及其树形结构信息上存在局限,通过影响基数估计或代价估计的准确度,进而影响查询计划选择的准确性和效率。其次,将查询优化建模为回归问题,要求模型能够准确预测查询的代价或执行延迟。这种方法不擅长处理从未见过的查询,在实际生产部署环境中存在性能不稳定的问题。而且模型倾向于优化那些执行时间较长的查询,而忽视了执行效率更高的短时间查询,从而影响整体查询执行效率。
针对简单神经网络模型在提取查询计划的复杂特征及其树形结构信息的局限性,本文提出了一种基于树Transformer的查询计划表征算法QPR(Query Plan Representation)。QPR从查询、计划和数据三个维度提取和编码查询计划关键特征,采用树注意力机制理解计划树的结构信息及语义依赖关系。QPR通过为基于机器学习的查询优化任务(如基数估计或代价估计)提供高效查询计划表征,提高估计准确度,从而提升查询执行效率。
针对将查询优化建模为回归范式的局限性,本文提出了一种基于排序学习的查询计划选择算法QPSLR(Query Plan Selection based-on Learin-to-Rank)。QPSLR首先通过启发式计划枚举策略引导传统查询优化器生成候选查询计划集合。随后,利用QPR将这些查询计划转换为特征向量。采用成对式和列表式两种排序学习策略,QPSLR通过学习区分不同查询计划的优劣,进而对候选计划进行排名。最终,基于该计划排名选择最优查询计划,有效提高了查询优化的效率和实用性。
本文将提出的数据库智能查询优化算法QPR和QPSLR集成至Postgre SQL数据库,并在真实数据集和查询工作负载下进行实验测试,结果验证了它们对于提升数据库查询执行效率的有效性和实用性。