数据库操作语句执行计划的优化方法、存储介质与设备技术

技术编号:38862781 阅读:14 留言:0更新日期:2023-09-17 10:04
本发明专利技术提供了一种数据库操作语句执行计划的优化方法、存储介质与设备。其中上述方法包括:获取数据库操作语句;计算数据库操作语句的哈希值;在预设信息表中查询哈希值对应的基数估计值;根据基数估计值生成数据库操作语句的执行计划;获取执行计划的执行结果;根据执行结果更新预设信息表中信息。通过这种方法,将数据库操作语句每次执行后的结果值更新至预设信息表中,达到自动更新此数据库操作语句基数估计值的目的,从而在后续使用同样的数据库操作语句时能够根据准确的基数估计值生成数据库操作语句最优的执行计划,提升数据库操作语句的执行效率。操作语句的执行效率。操作语句的执行效率。

【技术实现步骤摘要】
数据库操作语句执行计划的优化方法、存储介质与设备


[0001]本专利技术涉及数据库技术,特别是涉及一种数据库操作语句执行计划的优化方法、存储介质与设备。

技术介绍

[0002]数据库在执行数据库操作语句(Structured Query Language,简称SQL)时,通常会通过优化器生成最优的执行计划,但有时会选择了错误的执行计划,包括表扫描方式、连接方式等操作。而选择错误的执行计划通常是因为代价估计的错误。
[0003]代价估计的错误一般由两个因素导致:基数估计错误和计算公式不准确。所以基数估计的准确与否决定着执行计划是否为最优,但是在常用的做法中,优化器在进行基数估计时,根据统计信息进行计算,所以当统计信息没有发生改变时,基数估计的值不会发生改变,所以当一个SQL的基数估计不准时,不进行人为干涉,优化器无法自行修正基数估计。

技术实现思路

[0004]本专利技术的一个目的是提升数据库操作语句的执行效率。
[0005]本专利技术一个进一步的目的是生成数据库操作语句最优的执行计划。
[0006]本专利技术一个进一步的目的是使数据库能够自动更新基数估计值。
[0007]特别地,本专利技术提供了一种数据库操作语句执行计划的优化方法,其包括:
[0008]获取数据库操作语句;
[0009]计算数据库操作语句的哈希值;
[0010]在预设信息表中查询哈希值对应的基数估计值;
[0011]根据基数估计值生成数据库操作语句的执行计划;
[0012]获取执行计划的执行结果;
[0013]根据执行结果更新预设信息表中信息。
[0014]可选地,根据执行结果更新预设信息表中信息的步骤包括:
[0015]判断执行结果中实际返回行数是否与基数估计值相同;
[0016]若不相同,则计算执行结果对应的数据库操作语句的目标哈希值;
[0017]以目标哈希值为键值更新预设信息表。
[0018]可选地,以目标哈希值为键值更新预设信息表的步骤包括:
[0019]将目标哈希值作为键值,在预设信息表中查询键值对应的数据行;
[0020]将执行结果中的实际返回行数通过预设算法存入数据行中。
[0021]可选地,预设算法包括:LRU算法。
[0022]可选地,在预设信息表中查询哈希值对应的基数估计值的步骤包括:
[0023]判断预设信息表中是否存在哈希值对应的基数估计值;
[0024]若存在,则获取基数估计值;
[0025]若不存在,则以缺省的基数估计算法进行基数计算,并将计算结果作为基数估计
值。
[0026]可选地,根据基数估计值生成数据库操作语句的执行计划的步骤包括:
[0027]由数据库中的优化器获取基数估计值,并根据基数估计值生成数据库操作语句的最优执行计划。
[0028]可选地,获取执行计划的执行结果的步骤之前包括:
[0029]调用数据库中执行器执行此执行计划,并将执行结果返回给数据库。
[0030]可选地,预设信息表包括:双向链表。
[0031]根据本专利技术的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种的数据库操作语句执行计划的优化方法。
[0032]根据本专利技术的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现上述任一种的数据库操作语句执行计划的优化方法。
[0033]本专利技术的数据库操作语句执行计划的优化方法,在获取到数据库操作语句之后,计算此数据库操作语句的哈希值;在预设信息表中查询此哈希值对应的基数估计值;根据此基数估计值调用优化器生成数据库操作语句的最优执行计划;调用数据库中执行器执行此执行计划,并将执行结果返回给数据库;判断执行结果中实际返回行数是否与基数估计值相同;若不相同,则计算执行结果对应的数据库操作语句的目标哈希值;将目标哈希值作为键值,在预设信息表中查询此键值对应的数据行;将执行结果中的实际返回行数通过预设算法存入此数据行中。通过此方法,将数据库操作语句每次执行后的实际返回结果值更新至预设信息表中,达到自动更新此数据库操作语句基数估计值的目的,从而在后续使用同样的数据库操作语句时能够生成数据库操作语句最优的执行计划,提升数据库操作语句的执行效率。
[0034]根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明了本专利技术的上述以及其他目的、优点和特征。
附图说明
[0035]后文将参照附图以示例性而非限制性的方式详细描述本专利技术的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
[0036]图1是根据本专利技术一个实施例的数据库操作语句执行计划的优化方法的流程示意图;
[0037]图2是根据本专利技术另一个实施例的数据库操作语句执行计划的优化方法的流程示意图;
[0038]图3是根据本专利技术一个实施例的数据库操作语句执行计划的优化方法中机器可读存储介质的示意图;以及
[0039]图4是根据本专利技术一个实施例的数据库操作语句执行计划的优化方法中计算机设备的示意图。
具体实施方式
[0040]本领域技术人员应当理解的是,下文所描述的实施例仅仅是本专利技术的一部分实施例,而不是本专利技术的全部实施例,该一部分实施例旨在用于解释本专利技术的技术原理,并非用于限制本专利技术的保护范围。基于本专利技术提供的实施例,本领域普通技术人员在没有付出创造性劳动的情况下所获得的其它所有实施例,仍应落入到本专利技术的保护范围之内。
[0041]图1是根据本专利技术一个实施例的数据库操作语句执行计划的优化方法的流程示意图。本流程包括:
[0042]步骤S101,获取数据库操作语句。
[0043]步骤S102,计算数据库操作语句的哈希值。
[0044]步骤S103,在预设信息表中查询哈希值对应的基数估计值。本步骤包括:通过步骤S102计算得到的哈希值在预设信息表中进行查询,并判断预设信息表中是否存在哈希值对应的基数估计值;若存在哈希值对应的基数估计值,则获取此基数估计值;若不存在哈希值对应的基数估计值,则以缺省的基数估计算法进行基数计算,并将计算结果作为基数估计值。其中,预设信息表的一种可选的示例如:双向链表,本领域技术人员可以根据实际需求选择对应的信息表。
[0045]步骤S104,根据基数估计值生成数据库操作语句的执行计划。本步骤包括:调用数据库中的优化器获取步骤S103中查询得到的基数估计值,并根据基数估计值生成数据库操作语句的最优执行计划。
[0046]步骤S105,获取执行计划的执行结果。在本步骤之前还包括:调用数据库中执行器执行步骤S104生成的执行计划,并将执行结果返回给数据库。
[0047]步骤S本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库操作语句执行计划的优化方法,包括:获取所述数据库操作语句;计算所述数据库操作语句的哈希值;在预设信息表中查询所述哈希值对应的基数估计值;根据所述基数估计值生成所述数据库操作语句的执行计划;获取所述执行计划的执行结果;根据所述执行结果更新所述预设信息表中信息。2.根据权利要求1所述的数据库操作语句执行计划的优化方法,其中,所述根据所述执行结果更新所述预设信息表中信息的步骤包括:判断所述执行结果中实际返回行数是否与基数估计值相同;若不相同,则计算所述执行结果对应的数据库操作语句的目标哈希值;以所述目标哈希值为键值更新所述预设信息表。3.根据权利要求2所述的数据库操作语句执行计划的优化方法,其中,所述以所述目标哈希值为键值更新所述预设信息表的步骤包括:将所述目标哈希值作为键值,在所述预设信息表中查询所述键值对应的数据行;将所述执行结果中的实际返回行数通过预设算法存入所述数据行中。4.根据权利要求3所述的数据库操作语句执行计划的优化方法,其中,所述预设算法包括:LRU算法。5.根据权利要求1所述的数据库操作语句执行计划的优化方法,其中,所述在预设信息表中查询所述哈希值对应的基数估计值的步骤包括:判断所述预设...

【专利技术属性】
技术研发人员:李清源尹强徐登峰冷建全
申请(专利权)人:北京人大金仓信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1