一种数据库的查询方法与相关产品与流程
本发明涉及数据库技术,特别是涉及一种数据库的查询方法与相关产品。
背景技术:
1、在关系型数据库中,在执行包含union操作的查询时,现有数据库系统通常采用固定的去重执行策略,即在预设的执行节点处执行去重操作。对于去重操作在合并之后统一执行的情形,若数据重复率较高,各分支的全部数据需经合并处理,中间数据量极大,内存消耗较高,去重成本随数据量增长显著上升。对于去重操作在各分支内预先执行的情形,若数据重复率较低,各分支的去重操作几乎无法缩减数据量,却引入了额外的计算开销,且后续仍需对合并后的全部数据执行整体去重,整体计算量反而增加。
技术实现思路
1、本发明的一个目的是要提升包含union操作的查询的执行性能。
2、本发明一个进一步的目的是要降低包含union操作的查询在执行过程中的内存资源消耗。
3、特别地,本发明提供了一种数据库的查询方法,包括:
4、根据包含union操作的查询语句,生成带有跨分支重复节点标注的查询语法树;
5、根据所述查询语法树生成至少两个候选执行计划,各所述候选执行计划中所述跨分支重复节点对应的处理位置不同;
6、获取所述查询语法树中各分支所涉及列的基数,所述基数用于表征对应列中非重复值的数量;
7、获取用于评估所述基数可靠性的至少一个质量影响因子,并根据所述质量影响因子确定所述基数的置信度区间;所述质量影响因子包括所述基数的统计信息更新时间、统计信息采样率或数据变化频率;
8、根据所述基数的置信度区间,生成各所述候选执行计划的代价浮动范围,所述代价浮动范围用于表征因所述基数的置信度区间边界差异所导致的执行代价波动幅度;
9、根据各所述候选执行计划的代价浮动范围之间的重叠关系,以及各所述候选执行计划对所述基数的置信度区间的敏感度,从各所述候选执行计划中选取目标执行计划;
10、由数据库的查询执行引擎根据所述目标执行计划执行所述查询语句,并返回查询结果。
11、可选地,根据包含union操作的查询语句,生成带有跨分支重复节点标注的查询语法树包括:
12、解析所述查询语句的语法结构,识别所述查询语句中的union操作节点;
13、提取所述union操作节点的各分支子查询对应的语法子树,确定各所述语法子树的拓扑结构;
14、遍历各所述语法子树,提取各分支子查询的节点列表,所述节点列表包含各分支中的基表扫描节点、连接节点、过滤节点、投影节点及去重节点;
15、根据各分支的所述拓扑结构和所述节点列表,确定各分支中是否存在去重节点;
16、若少于两个分支存在去重节点,生成不带有跨分支重复节点标注的查询语法树;
17、若至少两个分支中存在去重节点,提取各所述去重节点所针对的目标列信息;
18、根据所述目标列信息,对不同分支间的去重节点进行两两匹配,判断两个去重节点所针对的目标列是否相同或等价;
19、若任意两个分支间的去重节点匹配成功,在所述查询语法树中为匹配成功的去重节点添加跨分支标注信息,生成带有跨分支重复节点标注的查询语法树;
20、若任意两个分支间的去重节点均匹配失败,生成不带有跨分支重复节点标注的查询语法树。
21、可选地,判断两个去重节点所针对的目标列是否相同或等价包括:
22、判断两个去重节点所针对的目标列的列名是否相同,若是,判定为相同;
23、若列名不同,根据预设的列等价映射表判断两个目标列是否具有等价关系,若是,判定为等价。
24、可选地,根据所述查询语法树生成至少两个候选执行计划包括:
25、根据所述跨分支重复节点标注,识别所述查询语句的模式类型,所述模式类型包括第一模式和第二模式;在所述第一模式中,所述查询语法树包含合并节点和位于所述合并节点之后的去重操作节点;在所述第二模式中,所述查询语法树包含合并节点,且至少两个分支中分别包含位于所述合并节点之前的去重操作节点;
26、在所述模式类型为所述第一模式的情况下,生成采用所述第一模式的第一模式候选计划,以及采用所述第二模式的第二模式候选计划,所述第二模式候选计划通过将所述去重操作节点下推至各分支得到,其中,将所述去重操作节点下推至各分支包括:复制所述去重操作节点至所述合并节点的各分支中,以及删除所述合并节点之后的所述去重操作节点;
27、在所述模式类型为所述第二模式的情况下,生成采用所述第二模式的第二模式候选计划,以及采用所述第一模式的第一模式候选计划,所述第一模式候选计划通过将各分支中的所述去重操作节点上拉至所述合并节点之后得到,其中,将各分支中的所述去重操作节点上拉至所述合并节点之后包括:删除各分支中的所述去重操作节点,以及在所述合并节点之后添加去重操作节点。
28、可选地,根据所述质量影响因子确定所述基数的置信度区间包括:
29、获取所述质量影响因子,所述质量影响因子包括所述基数的统计信息更新时间、统计信息采样率或数据变化频率;
30、分别确定所述更新时间对应的时间衰减因子、所述采样率对应的可靠因子、以及所述数据变化频率对应的波动因子;其中,所述时间衰减因子的取值随所述更新时间与当前时间之间的时间差的增大而单调递减;所述可靠因子的取值随所述采样率的增大而单调递增;所述波动因子的取值随所述数据变化频率的增大而单调递减;
31、获取所述更新时间对应的第一权重系数、所述采样率对应的第二权重系数、以及所述数据变化频率对应的第三权重系数;其中,所述第一权重系数、所述第二权重系数和所述第三权重系数通过以下方式预先确定:获取历史查询性能数据,所述历史查询性能数据包括至少一个历史查询语句在执行时所采用的实际执行计划、所述实际执行计划的执行耗时、以及所述历史查询语句执行前所使用的统计信息与执行后重新获得的统计信息之间的偏差值;以所述历史查询性能数据为样本,以所述更新时间与执行时间之间的时间差、所述采样率和所述数据变化频率为自变量,以所述实际执行耗时为因变量,通过回归分析确定所述第一权重系数、所述第二权重系数和所述第三权重系数的取值;
32、分别确定所述时间衰减因子对应的第一误差区间、所述可靠因子对应的第二误差区间、以及所述波动因子对应的第三误差区间;其中,基于所述历史查询性能数据中所述时间衰减因子、所述可靠因子和所述波动因子的历史取值分布分别统计标准差,并基于各因子的标准差确定对应的误差区间;
33、将所述时间衰减因子、所述可靠因子和所述波动因子按照所述第一权重系数、所述第二权重系数和所述第三权重系数进行加权求和,得到所述基数的置信度基准值;
34、根据所述第一权重系数、所述第二权重系数和所述第三权重系数对所述第一误差区间、所述第二误差区间和所述第三误差区间进行加权传播,以所述置信度基准值为中心值,确定所述基数的置信度区间。
35、可选地,生成各所述候选执行计划的代价浮动范围包括:
36、所述基数的置信度区间包括置信度下限值和置信度上限值;
37、获取所述查询语法树中各分支所涉及列的数据总量,将所述数据总量和所述置信度下限值输入数据库系统中预设的代价估计函数,得到所述候选执行计划的代价下限值;将所述数据总量和所述置信度上限值输入数据库系统中预设的代价估计函数,得到所述候选执行计划的代价上限值;
38、以所述代价下限值和所述代价上限值作为所述候选执行计划的代价浮动范围的上下边界。
39、可选地,从各所述候选执行计划中选取目标执行计划包括:
40、判断各所述候选执行计划的代价浮动范围之间是否存在重叠;
41、若否,选取代价浮动范围的代价上限值最小的候选执行计划作为目标执行计划;
42、若是,分别确定各所述候选执行计划相对于所述基数的置信度区间的敏感度,所述敏感度为所述候选执行计划的代价浮动范围边界随所述置信度区间边界移动的变化率;若存在敏感度小于预设敏感度阈值的候选执行计划,选取代价浮动范围中点值最小的候选执行计划作为目标执行计划;若所有候选执行计划的敏感度均大于或等于所述预设敏感度阈值,选取敏感度最小的候选执行计划作为目标执行计划。
43、根据本发明的另一个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一种的数据库的查询方法的步骤。
44、根据本发明的又一个方面,还提供了一种计算机程序产品,其包括计算机程序,该计算机程序被处理器执行时实现上述任一种的数据库的查询方法的步骤。
45、根据本发明的再一个方面,还提供了一种计算机设备,其包括存储器、处理器及存储在存储器上的计算机程序,处理器执行计算机程序以实现任一种的数据库的查询方法的步骤。
46、本发明的数据库的查询方法,通过识别包含union操作的查询语句并生成带有跨分支重复节点标注的查询语法树,能够准确定位去重操作的可选执行位置,提升查询优化的精细度。通过生成至少两个去重处理位置不同的候选执行计划,并基于各分支所涉及列的基数信息对各候选执行计划进行代价评估,能够根据不同数据分布特征提供多种可选的执行路径,避免因单一固定策略与数据实际分布不匹配而导致的性能损失。通过获取统计信息更新时间、采样率和数据变化频率等质量影响因子确定基数的置信度区间,将统计信息的不确定性量化为可计算的置信度区间,使代价评估能够充分考虑统计信息本身可能存在的误差,提高代价估算的准确性和可靠性。通过根据基数的置信度区间生成各候选执行计划的代价浮动范围,并基于各候选执行计划的代价浮动范围之间的重叠关系以及对基数的敏感度选取目标执行计划,能够在统计信息存在误差的情况下优先选择对基数误差不敏感的稳健执行计划,避免因基数估计偏差导致选择实际执行效率低下的执行计划,提升查询执行的稳定性。
47、根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com