本发明涉及数据处理,尤其涉及sql执行计划监控方法、装置、设备及存储介质。
背景技术:
1、现代数据库从以前基于规则生成sql执行计划的方式逐渐演变为基于代价生成sql执行计划的方式,基于代价生成sql执行计划的方式根据硬件能力的不同,数据库参数配置,表统计信息的准确度而计算出不同成本的执行计划,并最终选择一个成本最低的执行计划执行sql。所以当影响成本计算的因子发生变动,sql执行计划价就有可能发生改变。
2、而由于业务的发展,数据量迅猛增长,单机数据库达到系统资源上线后会对业务数据进行垂直拆分或水平拆分,垂直或水平拆分后会导致数据库中存在大量sql结构相同,表名不同,但是对应的执行计划混乱不一致。在现有技术中,针对这种sql结构相同、表名不同的sql执行计划,暂时没有相应的管理方法。
技术实现思路
1、本发明提供sql执行计划监控方法、装置、设备及存储介质,用以解决现有技术中无法对sql结构相同、表名不同的sql执行计划进行管理的方案缺陷,实现对业务数据拆分后的sql的执行计划的监控。
2、本发明提供一种sql执行计划监控方法,包括:
3、遍历sql表,所述sql表中包括多条sql以及每条sql对应的执行计划;
4、当所述sql表中存在属于相同的数据库的第一sql和第二sql时,发出告警信息;
5、其中,所述第一sql和所述第二sql的sql哈希值不一致,通用sql哈希值一致,通用执行计划哈希值不一致,sql的所述通用sql哈希值以及所述通用执行计划哈希值是分别将sql和执行计划的表名中的非功能性文本替换为预设通用文本之后生成的。
6、根据本发明提供的一种sql执行计划监控方法,所述遍历sql表之后,包括:
7、当所述sql表中存在不属于相同的数据库的所述第一sql和所述第二sql时,发出告警信息;
8、当所述sql表中存在不属于相同的数据库的第三sql和第四sql时,发出告警信息;
9、其中,所述第三sql和所述第四sql的sql哈希值一致,执行计划哈希值不一致。
10、根据本发明提供的一种sql执行计划监控方法,所述sql表包括基线sql表和新上线sql表,所述基线sql表为在预设时段内进行sql采集生成的sql表,所述遍历sql表之后,还包括:
11、当采集到的第一目标sql包括在所述基线sql表中且不包括在所述新上线sql表中时,确定采集到的所述第一目标sql的执行计划;
12、若第一执行计划和第二执行计划不一致时,确定所述第一执行计划和所述第二执行计划的计划成本,所述第一执行计划为采集到的所述第一目标sql的执行计划,所述第二执行计划为所述基线sql表中所述第一目标sql对应的执行计划;
13、当所述第一执行计划的计划成本低于所述第二执行计划时,将所述基线sql表中所述第一目标sql对应的执行计划替换为所述第一执行计划。
14、根据本发明提供的一种sql执行计划监控方法,所述确定所述第一执行计划和所述第二执行计划的计划成本之后,还包括:
15、当所述第一执行计划的计划成本高于所述第二执行计划时,发出告警信息,并将所述第一执行计划写入至异常执行计划表中。
16、根据本发明提供的一种sql执行计划监控方法,所述遍历sql表之后,还包括:
17、当采集到的第二目标sql不包括在所述基线sql表中且不包括在所述新上线sql表中时,将所述第二目标sql加入至所述新上线sql表和所述基线sql表中,并发出告警信息。
18、根据本发明提供的一种sql执行计划监控方法,所述遍历sql表之后,还包括:
19、当采集到第三目标sql时,发出告警信息,所述第三目标sql包括在所述基线sql表中,也包括在所述新上线sql表中;
20、若所述第三目标sql在所述新上线sql表中的存在时长超过预设时长,则将所述第三目标sql从所述新上线sql表中删除。
21、本发明还提供一种sql执行计划监控装置,包括:
22、表遍历模块,用于遍历sql表,所述sql表中包括多条sql以及每条sql对应的执行计划;
23、比对告警模块,用于当所述sql表中存在属于相同的数据库的第一sql和第二sql时,发出告警信息;
24、其中,所述第一sql和所述第二sql的sql哈希值不一致,通用sql哈希值一致,通用执行计划哈希值不一致,sql的所述通用sql哈希值以及所述通用执行计划哈希值是分别将sql和执行计划的表名中的非功能性文本替换为预设通用文本之后生成的。
25、本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述sql执行计划监控方法。
26、本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述sql执行计划监控方法。
27、本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述sql执行计划监控方法。
28、本发明提供的sql执行计划监控方法、装置、设备及存储介质,将sql以及sql对应的执行计划加入至sql表中,为每个sql设置对应的通用sql哈希值和通用执行计划哈希值,通用sql哈希值和通用执行计划哈希值是分别将sql和执行计划的表名中的非功能性文本替换为预设通用文本之后生成的,通过遍历sql表,查找sql哈希值不一致,通用sql哈希值一致,通用执行计划哈希值不一致的第一sql和第二sql,可以实现对数据库中sql结构相同,但是表名不同的sql的执行计划的检查与监控。
1.一种sql执行计划监控方法,其特征在于,包括:
2.根据权利要求1所述的sql执行计划监控方法,其特征在于,所述遍历sql表之后,包括:
3.根据权利要求1所述的sql执行计划监控方法,其特征在于,所述sql表包括基线sql表和新上线sql表,所述基线sql表为在预设时段内进行sql采集生成的sql表,所述遍历sql表之后,还包括:
4.根据权利要求3所述的sql执行计划监控方法,其特征在于,所述确定所述第一执行计划和所述第二执行计划的计划成本之后,还包括:
5.根据权利要求3所述的sql执行计划监控方法,其特征在于,所述遍历sql表之后,还包括:
6.根据权利要求3所述的sql执行计划监控方法,其特征在于,所述遍历sql表之后,还包括:
7.一种sql执行计划监控装置,其特征在于,包括:
8.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述sql执行计划监控方法。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述sql执行计划监控方法。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述sql执行计划监控方法。