本发明涉及数据库技术,特别是涉及一种数据库操作语句执行计划的优化方法、存储介质与设备。
背景技术:
1、数据库在执行数据库操作语句(structured query language,简称sql)时,通常会通过优化器生成最优的执行计划,但有时会选择了错误的执行计划,包括表扫描方式、连接方式等操作。而选择错误的执行计划通常是因为代价估计的错误。
2、代价估计的错误一般由两个因素导致:基数估计错误和计算公式不准确。所以基数估计的准确与否决定着执行计划是否为最优,但是在常用的做法中,优化器在进行基数估计时,根据统计信息进行计算,所以当统计信息没有发生改变时,基数估计的值不会发生改变,所以当一个sql的基数估计不准时,不进行人为干涉,优化器无法自行修正基数估计。
技术实现思路
1、本发明的一个目的是提升数据库操作语句的执行效率。
2、本发明一个进一步的目的是生成数据库操作语句最优的执行计划。
3、本发明一个进一步的目的是使数据库能够自动更新基数估计值。
4、特别地,本发明提供了一种数据库操作语句执行计划的优化方法,其包括:
5、获取数据库操作语句;
6、计算数据库操作语句的哈希值;
7、在预设信息表中查询哈希值对应的基数估计值;
8、根据基数估计值生成数据库操作语句的执行计划;
9、获取执行计划的执行结果;
10、根据执行结果更新预设信息表中信息。
11、可选地,根据执行结果更新预设信息表中信息的步骤包括:
12、判断执行结果中实际返回行数是否与基数估计值相同;
13、若不相同,则计算执行结果对应的数据库操作语句的目标哈希值;
14、以目标哈希值为键值更新预设信息表。
15、可选地,以目标哈希值为键值更新预设信息表的步骤包括:
16、将目标哈希值作为键值,在预设信息表中查询键值对应的数据行;
17、将执行结果中的实际返回行数通过预设算法存入数据行中。
18、可选地,预设算法包括:lru算法。
19、可选地,在预设信息表中查询哈希值对应的基数估计值的步骤包括:
20、判断预设信息表中是否存在哈希值对应的基数估计值;
21、若存在,则获取基数估计值;
22、若不存在,则以缺省的基数估计算法进行基数计算,并将计算结果作为基数估计值。
23、可选地,根据基数估计值生成数据库操作语句的执行计划的步骤包括:
24、由数据库中的优化器获取基数估计值,并根据基数估计值生成数据库操作语句的最优执行计划。
25、可选地,获取执行计划的执行结果的步骤之前包括:
26、调用数据库中执行器执行此执行计划,并将执行结果返回给数据库。
27、可选地,预设信息表包括:双向链表。
28、根据本发明的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种的数据库操作语句执行计划的优化方法。
29、根据本发明的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现上述任一种的数据库操作语句执行计划的优化方法。
30、本发明的数据库操作语句执行计划的优化方法,在获取到数据库操作语句之后,计算此数据库操作语句的哈希值;在预设信息表中查询此哈希值对应的基数估计值;根据此基数估计值调用优化器生成数据库操作语句的最优执行计划;调用数据库中执行器执行此执行计划,并将执行结果返回给数据库;判断执行结果中实际返回行数是否与基数估计值相同;若不相同,则计算执行结果对应的数据库操作语句的目标哈希值;将目标哈希值作为键值,在预设信息表中查询此键值对应的数据行;将执行结果中的实际返回行数通过预设算法存入此数据行中。通过此方法,将数据库操作语句每次执行后的实际返回结果值更新至预设信息表中,达到自动更新此数据库操作语句基数估计值的目的,从而在后续使用同样的数据库操作语句时能够生成数据库操作语句最优的执行计划,提升数据库操作语句的执行效率。
31、根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
1.一种数据库操作语句执行计划的优化方法,包括:
2.根据权利要求1所述的数据库操作语句执行计划的优化方法,其中,所述根据所述执行结果更新所述预设信息表中信息的步骤包括:
3.根据权利要求2所述的数据库操作语句执行计划的优化方法,其中,所述以所述目标哈希值为键值更新所述预设信息表的步骤包括:
4.根据权利要求3所述的数据库操作语句执行计划的优化方法,其中,
5.根据权利要求1所述的数据库操作语句执行计划的优化方法,其中,所述在预设信息表中查询所述哈希值对应的基数估计值的步骤包括:
6.根据权利要求1所述的数据库操作语句执行计划的优化方法,其中,所述根据所述基数估计值生成所述数据库操作语句的执行计划的步骤包括:
7.根据权利要求1所述的数据库操作语句执行计划的优化方法,其中,所述获取所述执行计划的执行结果的步骤之前包括:
8.根据权利要求1所述的数据库操作语句执行计划的优化方法,其中,
9.一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据权利要求1至8任一项所述的数据库操作语句执行计划的优化方法。
10.一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据权利要求1至8任一项所述的数据库操作语句执行计划的优化方法。