CN114077532A - 一种sql语句执行效率检测方法及装置 - Google Patents

一种sql语句执行效率检测方法及装置 Download PDF

Info

Publication number
CN114077532A
CN114077532A CN202111387991.XA CN202111387991A CN114077532A CN 114077532 A CN114077532 A CN 114077532A CN 202111387991 A CN202111387991 A CN 202111387991A CN 114077532 A CN114077532 A CN 114077532A
Authority
CN
China
Prior art keywords
execution
sql statement
object set
target
objects
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111387991.XA
Other languages
English (en)
Inventor
万鹏
童慧明
卢星辰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Construction Bank Corp
Original Assignee
China Construction Bank Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Construction Bank Corp filed Critical China Construction Bank Corp
Priority to CN202111387991.XA priority Critical patent/CN114077532A/zh
Publication of CN114077532A publication Critical patent/CN114077532A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3438Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供的一种SQL语句执行效率检测方法及装置,可以获得目标SQL语句的当前版本执行计划和上一版本执行计划;基于当前版本执行计划和上一版本执行计划,检测目标SQL语句的执行效率是否降低,如果降低,则获得当前版本执行计划对应的第一对象集合和上一版本执行计划对应的第二对象集合;根据第一对象集合和第二对象集合,检测出导致目标SQL语句的执行效率降低的备选因素并输出检测结果。本公开通过执行效率降低的目标SQL语句的当前版本执行计划对应的第一对象集合和上一版本执行计划对应的第二对象集合,可以高效检测出导致目标SQL语句的执行效率降低的备选因素,从而保障数据库的正常运行。

Description

一种SQL语句执行效率检测方法及装置
技术领域
本公开涉及计算机技术领域,尤其涉及一种SQL语句执行效率检测方法及装置。
背景技术
在数据库运维过程中,经常会发生SQL语句的执行效率降低,导致执行时间长,从而引起交易响应时间也变长或出现大量待响应的SQL语句积压导致的数据库CPU资源耗尽的情况。
由于SQL语句关联的对象越多,需要检查的统计信息和索引也越多,导致执行效率降低的因素也越多,因此如何高效地对SQL语句进行执行效率检测并确定SQL语句的执行效率降低的因素,成为本领域技术人员急需解决的技术问题。
发明内容
鉴于上述问题,本公开提供一种克服上述问题或者至少部分地解决上述问题的一种SQL语句执行效率检测方法及装置,技术方案如下:
一种SQL语句执行效率检测方法,包括:
获得目标SQL语句;
获得所述目标SQL语句的当前版本执行计划和上一版本执行计划;
基于所述当前版本执行计划和所述上一版本执行计划,检测所述目标SQL语句的执行效率是否降低,如果降低,则获得所述当前版本执行计划对应的第一对象集合和所述上一版本执行计划对应的第二对象集合,其中,所述第一对象集合包括所述当前版本执行计划关联的各对象,所述第二对象集合包括所述上一版本执行计划关联的各对象;
根据所述第一对象集合和所述第二对象集合,检测出导致所述目标SQL语句的执行效率降低的备选因素并输出检测结果。
可选的,所述获得目标SQL语句,包括:
对目标数据库中的各SQL语句:按照SQL计划哈希值进行分组并按照总逻辑读数值进行降序排序,获得排序靠前的第一数量的第一SQL语句;
对所述目标数据库中的各SQL语句:按照执行次数最多的所述第一SQL语句的SQL文本哈希值进行分组并按照单次平均执行逻辑读进行降序排序,获得排序靠前的第二数量的第二SQL语句;
对所述第一数量的所述第一SQL语句和所述第二数量的所述第二SQL语句进行去重处理,获得第三数量的目标SQL语句。
可选的,所述基于所述当前版本执行计划和所述上一版本执行计划,检测所述目标SQL语句的执行效率是否降低,包括:
获得所述当前版本执行计划在首次执行时的第一执行目标数据,所述第一执行目标数据包括第一平均逻辑读数值;
获得所述上一版本执行计划在最后一次执行时的第二执行目标数据,所述第二执行目标数据包括第二平均逻辑读数值;
将所述第一平均逻辑读数值和第二平均逻辑读数值进行比对,确定所述目标SQL语句的执行效率是否降低。
可选的,所述获得所述当前版本执行计划对应的第一对象集合和所述上一版本执行计划对应的第二对象集合,包括:
利用所述目标SQL语句的SQL计划哈希值和SQL文本哈希值,通过v$sql_plan视图筛选出所述当前版本执行计划对应的第一对象集合和所述上一版本执行计划对应的第二对象集合。
可选的,所述第一执行目标数据还包括第一执行使用时间,所述第二执行目标数据还包括第二执行使用时间。
可选的,所述根据所述第一对象集合和所述第二对象集合,检测出导致所述目标SQL语句的执行效率降低的备选因素并输出检测结果,包括:
对所述第一对象集合和所述第二对象集合进行差集计算,获得第三对象集合和第四对象集合,其中,所述第三对象集合包括在所述第一对象集合存在且在所述第二对象集合中不存在的对象,所述第四对象集合包括在所述第二对象集合存在且在所述第一对象集合中不存在的对象;
对所述第一对象集合和所述第二对象集合进行并集计算,获得第五对象集合,其中,所述第五对象集合包括在所述第一对象集合中存在或在所述第二对象集合中存在的对象;
基于所述第一执行使用时间和所述第二执行使用时间,分别利用所述第三对象集合、所述第四对象集合和所述第五对象集合,确定所述目标SQL语句的执行效率降低的备选因素并输出检测结果。
可选的,所述基于所述第一执行使用时间和所述第二执行使用时间,分别利用所述第三对象集合、所述第四对象集合和所述第五对象集合,确定所述目标SQL语句的执行效率降低的备选因素并输出检测结果,包括:
对所述第三对象集合中的任一对象:获得创建该对象的第一时间;
在所述第一时间大于所述第二执行使用时间且小于所述第一执行使用时间的情况下,确定所述目标SQL语句的执行效率降低的备选因素包括该对象被创建并输出包括该对象对应的对象信息的检测结果。
可选的,所述基于所述第一执行使用时间和所述第二执行使用时间,分别利用所述第三对象集合、所述第四对象集合和所述第五对象集合,确定所述目标SQL语句的执行效率降低的备选因素并输出检测结果,包括:
对所述第四对象集合中的任一对象:检测该对象在目标数据库中是否存在,如果不存在,则确定该对象被删除的第二时间,如果存在,则确定该对象最后一次DDL操作的第三时间;
在所述第二时间大于所述第二执行使用时间且小于所述第一执行使用时间的情况下,确定所述目标SQL语句的执行效率降低的备选因素包括该对象被删除并输出包括该对象对应的对象信息的检测结果;
在所述第三时间大于所述第二执行使用时间且小于所述第一执行使用时间的情况下,确定所述目标SQL语句的执行效率降低的备选因素包括该对象失效并输出包括该对象对应的对象信息的检测结果。
可选的,所述基于所述第一执行使用时间和所述第二执行使用时间,分别利用所述第三对象集合、所述第四对象集合和所述第五对象集合,确定所述目标SQL语句的执行效率降低的备选因素并输出检测结果,包括:
对所述第五对象集合中的任一对象:获得该对象进行统计信息收集的第四时间;
在所述第四时间与所述第一执行使用时间和所述第二执行使用时间满足预设大小关系条件的情况下,获得该对象的统计信息变化率;
基于所述统计信息变化率,计算该对象对应的目标变化值;
在该对象对应的所述目标变化值大于第一预设变化阈值的情况下,确定所述目标SQL语句的执行效率降低的备选因素包括该对象的所述统计信息变化率不稳定并输出包括该对象的所述统计信息变化率不稳定的检测结果;
在所述第五对象集合中的各对象对应的所述目标变化值均小于第二预设变化阈值的情况下,确定所述目标SQL语句的执行效率降低的备选因素包括动态采样失准并输出包括所述第五对象集合中的各对象的所述统计信息变化率的检测结果。
一种SQL语句执行效率检测装置,包括:目标SQL语句获得单元、执行计划获得单元、执行效率检测单元、对象集合获得单元以及效率降低备选因素检测单元,
所述目标SQL语句获得单元,用于获得目标SQL语句;
所述执行计划获得单元,用于获得所述目标SQL语句的当前版本执行计划和上一版本执行计划;
所述执行效率检测单元,用于基于所述当前版本执行计划和所述上一版本执行计划,检测所述目标SQL语句的执行效率是否降低,如果降低,则触发所述所述对象集合获得单元;
所述对象集合获得单元,用于获得所述当前版本执行计划对应的第一对象集合和所述上一版本执行计划对应的第二对象集合,其中,所述第一对象集合包括所述当前版本执行计划关联的各对象,所述第二对象集合包括所述上一版本执行计划关联的各对象;
效率降低备选因素检测单元,用于根据所述第一对象集合和所述第二对象集合,检测出导致所述目标SQL语句的执行效率降低的备选因素并输出检测结果。
借由上述技术方案,本公开提供的一种SQL语句执行效率检测方法及装置,可以获得目标SQL语句;获得目标SQL语句的当前版本执行计划和上一版本执行计划;基于当前版本执行计划和上一版本执行计划,检测目标SQL语句的执行效率是否降低,如果降低,则获得当前版本执行计划对应的第一对象集合和上一版本执行计划对应的第二对象集合,其中,所述第一对象集合包括所述当前版本执行计划关联的各对象,所述第二对象集合包括所述上一版本执行计划关联的各对象;根据第一对象集合和第二对象集合,检测出导致目标SQL语句的执行效率降低的备选因素并输出检测结果。本公开通过执行效率降低的目标SQL语句的当前版本执行计划对应的第一对象集合和上一版本执行计划对应的第二对象集合,可以高效检测出导致目标SQL语句的执行效率降低的备选因素,从而有利于运维人员及时进行优化,保障数据库的正常运行。
上述说明仅是本公开技术方案的概述,为了能够更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为了让本公开的上述和其它目的、特征和优点能够更明显易懂,以下特举本公开的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本公开的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本公开实施例提供的SQL语句执行效率检测方法的一种实施方式的流程示意图;
图2示出了本公开实施例提供的SQL语句执行效率检测方法的另一种实施方式的流程示意图;
图3示出了本公开实施例提供的SQL语句执行效率检测方法的另一种实施方式的流程示意图;
图4示出了本公开实施例提供的SQL语句执行效率检测方法中步骤S500的一种具体实施方式的流程示意图;
图5示出了本公开实施例提供的SQL语句执行效率检测方法中步骤S500的另一种具体实施方式的流程示意图;
图6示出了本公开实施例提供的SQL语句执行效率检测方法中步骤S500的另一种具体实施方式的流程示意图;
图7示出了本公开实施例提供的SQL语句执行效率检测方法中步骤S500的另一种具体实施方式的流程示意图;
图8示出了公开实施例提供的SQL语句执行效率检测装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
如图1所示,本公开实施例提供的SQL语句执行效率检测方法的一种实施方式的流程示意图,该SQL语句执行效率检测方法可以包括:
S100、获得目标SQL语句。
其中,目标SQL语句也称为VIP SQL(very important SQL)。本公开实施例可以在目标数据库中获得目标SQL语句。可选的,目标数据库可以是Oracle数据库(OracleDatabase)。
可选的,本公开实施例可以根据SQL计划哈希值(sql_plan_hash_value)和总逻辑读数值,将目标数据库中总执行开销高的SQL语句确定为目标SQL语句。
可选的,本公开实施例可以根据SQL文本哈希值(sql_id)和单次平均执行逻辑读(buffer_gets_delta),将目标数据库中单次执行开销高的SQL语句确定为目标SQL语句。
可选的,基于图1所示的方法,如图2所示,本公开实施例提供的SQL语句执行效率检测方法的另一种实施方式的流程示意图,步骤S100可以包括:
S110、对目标数据库中的各SQL语句:按照SQL计划哈希值进行分组并按照总逻辑读数值进行降序排序,获得排序靠前的第一数量的第一SQL语句。
可以理解的是,第一数量可以根据需求进行设置。可选的,第一数量可以设置为10。
S120、对目标数据库中的各SQL语句:按照执行次数最多的第一SQL语句的SQL文本哈希值进行分组并按照单次平均执行逻辑读进行降序排序,获得排序靠前的第二数量的第二SQL语句。
本公开实施例可以从dba_hist_sqlstat获得各第一SQL语句的执行次数(EXECUTIONS_TOTAL),并将执行次数最多的第一SQL语句的SQL文本哈希值进行分组。
可以理解的是,第二数量可以根据需求进行设置。可选的,第二数量可以设置为10。
S130、对第一数量的第一SQL语句和第二数量的第二SQL语句进行去重处理,获得第三数量的目标SQL语句。
可选的,本公开实施例可以按照预设SQL语句执行效率检测时间,获得目标SQL语句。例如:预设SQL语句执行效率检测时间可以为每天的9点和15点。
本公开实施例通过筛选出目标数据库中总执行开销高和单次执行开销高的SQL语句作为目标SQL语句,可以减少检测量,提高检测效率和保证检测准确性。
S200、获得目标SQL语句的当前版本执行计划和上一版本执行计划。
本公开实施例可以通过在MySQL使用explain关键字来查获得目标SQL语句的执行计划。
可选的,本公开实施例在检测到目标SQL语句的执行计划未变化的情况下,可以对下一条目标SQL语句执行步骤S200,直至第三数量的目标SQL语句全部检测完毕。
S300、基于当前版本执行计划和上一版本执行计划,检测目标SQL语句的执行效率是否降低,如果降低,则执行步骤S400。
可选的,本公开实施例可以将当前版本执行计划与上一版本执行计划进行对比,确定当前版本执行计划相对于上一版本执行计划是否发生变化,如果变化,则进一步根据当前版本执行计划和上一版本执行计划检测目标SQL语句的执行效率是否降低。
可选的,本公开实施例可以对比当前版本执行计划与上一版本执行计划的COST值、分布键、执行计划时间、下推函数以及统计信息等信息,确定当前版本执行计划相对于上一版本执行计划是否发生变化,并检测目标SQL语句的执行效率是否降低。
本公开实施例可以根据目标SQL语句在目标数据库中分别执行当前版本执行计划和上一版本执行计划时的表现情况,确定目标SQL语句在当前版本执行计划下的执行效率相比与在上一版本执行计划下的执行效率是否降低。
可选的,基于图1所示的方法,如图3所示,本公开实施例提供的SQL语句执行效率检测方法的另一种实施方式的流程示意图,步骤S300可以包括:
S310、获得当前版本执行计划在首次执行时的第一执行目标数据,第一执行目标数据包括第一平均逻辑读数值。
S320、获得上一版本执行计划在最后一次执行时的第二执行目标数据,第二执行目标数据包括第二平均逻辑读数值。
S330、将第一平均逻辑读数值和第二平均逻辑读数值进行比对,确定目标SQL语句的执行效率是否降低。
可选的,本公开实施例可以在第一平均逻辑读数值大于1.5倍的第二平均逻辑读数值的情况下,确定目标SQL语句的执行效率降低,反之,则确定目标SQL语句的执行效率未降低。
可选的,本公开实施例在确定目标SQL语句的执行效率未降低的情况下,可以对下一条目标SQL语句执行步骤S200,直至第三数量的目标SQL语句全部检测完毕。
平均逻辑读数值作为判断SQL语句的执行效率的重要指标,本公开实施例可以通过目标SQL语句在不同版本执行计划下的平均逻辑读数值,可以准确判断目标SQL语句的执行效率是否降低,即判断当前版本执行计划是否相对于上一版本执行计划变差。
可选的,第一执行目标数据还可以包括第一执行使用时间,第二执行目标数据还可以包括第二执行使用时间。
S400、获得当前版本执行计划对应的第一对象集合和上一版本执行计划对应的第二对象集合,其中,第一对象集合包括当前版本执行计划关联的各对象,第二对象集合包括上一版本执行计划关联的各对象。
可选的,本公开实施例可以利用目标SQL语句的SQL计划哈希值和SQL文本哈希值,通过v$sql_plan视图筛选出当前版本执行计划对应的第一对象集合和上一版本执行计划对应的第二对象集合。
具体的,本公开实施例可以以目标SQL语句的SQL计划哈希值和SQL文本哈希值作为筛选条件,从v$sql_plan视图中分别获得当前版本执行计划和上一版本执行计划涉及到的对象名称(object_name),从而获得第一对象集合和第二对象集合。
S500、根据第一对象集合和第二对象集合,检测出导致目标SQL语句的执行效率降低的备选因素并输出检测结果。
可选的,基于图3所示的方法,如图4所示,本公开实施例提供的SQL语句执行效率检测方法中步骤S500的一种具体实施方式的流程示意图,步骤S500可以包括:
S510、对第一对象集合和第二对象集合进行差集计算,获得第三对象集合和第四对象集合,其中,第三对象集合包括在第一对象集合存在且在第二对象集合中不存在的对象,第四对象集合包括在第二对象集合存在且在第一对象集合中不存在的对象。
S520、对第一对象集合和第二对象集合进行并集计算,获得第五对象集合,其中,第五对象集合包括在第一对象集合中存在或在第二对象集合中存在的对象。
S530、基于第一执行使用时间和第二执行使用时间,分别利用第三对象集合、第四对象集合和第五对象集合,确定目标SQL语句的执行效率降低的备选因素并输出检测结果。
可选的,本公开实施例可以预先将目标数据库的参数enable_ddl_logging设置为true,以使alert日志记录下对象的所有DDL操作。其中,DDL操作是对数据库内部的对象进行创建,删除,修改等的操作。
可选的,基于图4所示的方法,如图5所示,本公开实施例提供的SQL语句执行效率检测方法中步骤S500的另一种具体实施方式的流程示意图,步骤S530可以包括:
S531a、对第三对象集合中的任一对象:获得创建该对象的第一时间。
具体的,本公开实施例可以在dba_objects视图中获得创建该对象的第一时间(CREATED)。
S531b、在第一时间大于第二执行使用时间且小于第一执行使用时间的情况下,确定目标SQL语句的执行效率降低的备选因素包括该对象被创建并输出包括该对象对应的对象信息的检测结果。
本公开实施例通过检测出当前版本执行计划与上一版本执行计划相比新关联的对象,将该对象被创建确定为造成目标SQL语句的执行效率降低的备选因素,有利于帮助运维人员确定目标SQL语句的执行效率降低的原因。
可选的,基于图4所示的方法,如图6所示,本公开实施例提供的SQL语句执行效率检测方法中步骤S500的另一种具体实施方式的流程示意图,步骤S530可以包括:
S532a、对第四对象集合中的任一对象:检测该对象在目标数据库中是否存在,如果不存在,则确定该对象被删除的第二时间,如果存在,则确定该对象最后一次DDL操作的第三时间。
具体的,本公开实施例可以通过目标数据库的alert日志查询到该对象被删除的第二时间。可选的,本公开实施例可以在该对象在目标数据库中存在的情况下,确定该对象的可用状态,若该可用状态为失效状态,则在dba_objects视图中确定该对象最后一次DDL操作的第三时间(LAST_DDL_TIME)。
S532b、在第二时间大于第二执行使用时间且小于第一执行使用时间的情况下,确定目标SQL语句的执行效率降低的备选因素包括该对象被删除并输出包括该对象对应的对象信息的检测结果。
本公开实施例通过检测出当前版本执行计划与上一版本执行计划相比被删除的对象,将该对象被删除确定为造成目标SQL语句的执行效率降低的备选因素,有利于帮助运维人员确定目标SQL语句的执行效率降低的原因。
S532c、在第三时间大于第二执行使用时间且小于第一执行使用时间的情况下,确定目标SQL语句的执行效率降低的备选因素包括该对象失效并输出包括该对象对应的对象信息的检测结果。
本公开实施例通过检测出当前版本执行计划与上一版本执行计划相比失效的对象,将该对象失效确定为造成目标SQL语句的执行效率降低的备选因素,有利于帮助运维人员确定目标SQL语句的执行效率降低的原因。
可选的,基于图4所示的方法,如图7所示,本公开实施例提供的SQL语句执行效率检测方法中步骤S500的另一种具体实施方式的流程示意图,步骤S530可以包括:
S533a、对第五对象集合中的任一对象:获得该对象进行统计信息收集的第四时间。
具体的,本公开实施例可以通过dba_tab_statistics视图或dba_ind_statistics视图,获得该对象进行统计信息收集(LAST_ANALYZED)的第四时间。
S533b、在第四时间与第一执行使用时间和第二执行使用时间满足预设大小关系条件的情况下,获得该对象的统计信息变化率。
可以理解的是,预设大小关系条件可以根据实际需求进行设置。可选的,预设大小关系条件可以为第四时间大于第二执行使用时间减去预设无效时间的值且小于第一执行使用时间。可选的,预设无效时间可以为5小时来自optimizer_invalidation_period参数。
本公开实施例可以通过wri$_optstat_tab_history或wri$_optstat_ind_history,获得对象的统计信息变化率。具体的,本公开实施例可以获得当前的NUM_ROWS和第四时间前的NUM_ROWS,通过当前的NUM_ROWS和第四时间前的NUM_ROWS的比值,确定该对象的统计信息变化率。
S533c、基于统计信息变化率,计算该对象对应的目标变化值。
具体的,本公开实施例可以将预设数值除以统计信息变化率,计算出目标变化值。可选的,预设数值可以为1。
S533d、在该对象对应的目标变化值大于第一预设变化阈值的情况下,确定目标SQL语句的执行效率降低的备选因素包括该对象的统计信息变化率不稳定并输出包括该对象的统计信息变化率不稳定的检测结果。
S533e、在第五对象集合中的各对象对应的目标变化值均小于第二预设变化阈值的情况下,确定目标SQL语句的执行效率降低的备选因素包括动态采样失准并输出包括第五对象集合中的各对象的统计信息变化率的检测结果。
可选的,第一预设变化率值可以为1.5。可选的,第二预设变化阈值可以为1。
可选的,检测结果还可以包括与各备选因素对应的优化建议。
可选的,本公开实施例可以将对各目标SQL语句的执行效率进行检测后的检测结果输出至特定的文件中,以便通过web平台提供的查看检测结果接口对检测结果进行展示,方便数据库管理员(Database Administrator,DBA)进行查看。
本公开提供的一种SQL语句执行效率检测方法,可以获得目标SQL语句;获得目标SQL语句的当前版本执行计划和上一版本执行计划;基于当前版本执行计划和上一版本执行计划,检测目标SQL语句的执行效率是否降低,如果降低,则获得当前版本执行计划对应的第一对象集合和上一版本执行计划对应的第二对象集合,其中,所述第一对象集合包括所述当前版本执行计划关联的各对象,所述第二对象集合包括所述上一版本执行计划关联的各对象;根据第一对象集合和第二对象集合,检测出导致目标SQL语句的执行效率降低的备选因素并输出检测结果。本公开通过执行效率降低的目标SQL语句的当前版本执行计划对应的第一对象集合和上一版本执行计划对应的第二对象集合,可以高效检测出导致目标SQL语句的执行效率降低的备选因素,从而有利于运维人员及时进行优化,保障数据库的正常运行。
虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
与上述方法实施例相对应,本公开实施例还提供一种SQL语句执行效率检测装置,其结构如图8所示,可以包括:目标SQL语句获得单元100、执行计划获得单元200、执行效率检测单元300、对象集合获得单元400以及效率降低备选因素检测单元500。
目标SQL语句获得单元100,用于获得目标SQL语句。
执行计划获得单元200,用于获得目标SQL语句的当前版本执行计划和上一版本执行计划。
执行效率检测单元300,用于基于当前版本执行计划和上一版本执行计划,检测目标SQL语句的执行效率是否降低,如果降低,则触发对象集合获得单元400。
对象集合获得单元400,用于获得当前版本执行计划对应的第一对象集合和上一版本执行计划对应的第二对象集合,其中,第一对象集合包括当前版本执行计划关联的各对象,第二对象集合包括上一版本执行计划关联的各对象。
效率降低备选因素检测单元500,用于根据第一对象集合和第二对象集合,检测出导致目标SQL语句的执行效率降低的备选因素并输出检测结果。
可选的,目标SQL语句获得单元100可以包括:第一SQL语句获得子单元、第二SQL语句获得子单元以及目标SQL语句获得子单元。
第一SQL语句获得子单元,用于对目标数据库中的各SQL语句:按照SQL计划哈希值进行分组并按照总逻辑读数值进行降序排序,获得排序靠前的第一数量的第一SQL语句。
第二SQL语句获得子单元,用于对目标数据库中的各SQL语句:按照执行次数最多的第一SQL语句的SQL文本哈希值进行分组并按照单次平均执行逻辑读进行降序排序,获得排序靠前的第二数量的第二SQL语句。
目标SQL语句获得子单元,用于对第一数量的第一SQL语句和第二数量的第二SQL语句进行去重处理,获得第三数量的目标SQL语句。
可选的,执行效率检测单元300可以包括:第一执行目标数据获得子单元、第二执行目标数据获得子单元以及平均逻辑读数值比对子单元。
第一执行目标数据获得子单元,用于获得当前版本执行计划在首次执行时的第一执行目标数据,第一执行目标数据包括第一平均逻辑读数值。
第二执行目标数据获得子单元,用于获得上一版本执行计划在最后一次执行时的第二执行目标数据,第二执行目标数据包括第二平均逻辑读数值。
平均逻辑读数值比对子单元,用于将第一平均逻辑读数值和第二平均逻辑读数值进行比对,确定目标SQL语句的执行效率是否降低。
可选的,对象集合获得单元400,可以具体用于利用目标SQL语句的SQL计划哈希值和SQL文本哈希值,通过v$sql_plan视图筛选出当前版本执行计划对应的第一对象集合和上一版本执行计划对应的第二对象集合。
可选的,第一执行目标数据还包括第一执行使用时间,第二执行目标数据还包括第二执行使用时间。
可选的,效率降低备选因素检测单元500可以包括:差集计算子单元、并集计算子单元以及效率降低备选因素确定子单元。
差集计算子单元,用于对第一对象集合和第二对象集合进行差集计算,获得第三对象集合和第四对象集合,其中,第三对象集合包括在第一对象集合存在且在第二对象集合中不存在的对象,第四对象集合包括在第二对象集合存在且在第一对象集合中不存在的对象。
并集计算子单元,用于对第一对象集合和第二对象集合进行并集计算,获得第五对象集合,其中,第五对象集合包括在第一对象集合中存在或在第二对象集合中存在的对象。
效率降低备选因素确定子单元,用于基于第一执行使用时间和第二执行使用时间,分别利用第三对象集合、第四对象集合和第五对象集合,确定目标SQL语句的执行效率降低的备选因素并输出检测结果。
可选的,效率降低备选因素确定子单元可以包括:第一时间获得子单元以及第一备选因素确定子单元。
第一时间获得子单元,用于对第三对象集合中的任一对象:获得创建该对象的第一时间。
第一备选因素确定子单元,用于在第一时间大于第二执行使用时间且小于第一执行使用时间的情况下,确定目标SQL语句的执行效率降低的备选因素包括该对象被创建并输出包括该对象对应的对象信息的检测结果。
可选的,效率降低备选因素确定子单元可以包括:对象检测子单元、第二时间确定子单元、第三时间确定子单元、第二备选因素确定子单元以及第三备选因素确定子单元。
对象检测子单元,用于对第四对象集合中的任一对象:检测该对象在目标数据库中是否存在,如果不存在,则触发第二时间确定子单元,如果存在,则触发第三时间确定子单元。
第二时间确定子单元,用于确定该对象被删除的第二时间。
第三时间确定子单元,用于确定该对象最后一次DDL操作的第三时间。
第二备选因素确定子单元,用于在第二时间大于第二执行使用时间且小于第一执行使用时间的情况下,确定目标SQL语句的执行效率降低的备选因素包括该对象被删除并输出包括该对象对应的对象信息的检测结果;
第三备选因素确定子单元,用于在第三时间大于第二执行使用时间且小于第一执行使用时间的情况下,确定目标SQL语句的执行效率降低的备选因素包括该对象失效并输出包括该对象对应的对象信息的检测结果。
可选的,效率降低备选因素确定子单元可以包括:第四时间获得子单元、统计信息变化率获得子单元、目标变化值计算子单元、第四备选因素确定子单元以及第二备选因素确定子单元。
第四时间获得子单元,用于对第五对象集合中的任一对象:获得该对象进行统计信息收集的第四时间。
统计信息变化率获得子单元,用于在第四时间与第一执行使用时间和第二执行使用时间满足预设大小关系条件的情况下,获得该对象的统计信息变化率。
目标变化值计算子单元,用于基于统计信息变化率,计算该对象对应的目标变化值。
第四备选因素确定子单元,用于在该对象对应的目标变化值大于第一预设变化阈值的情况下,确定目标SQL语句的执行效率降低的备选因素包括该对象的统计信息变化率不稳定并输出包括该对象的统计信息变化率不稳定的检测结果。
第二备选因素确定子单元,用于在第五对象集合中的各对象对应的目标变化值均小于第二预设变化阈值的情况下,确定目标SQL语句的执行效率降低的备选因素包括动态采样失准并输出包括第五对象集合中的各对象的统计信息变化率的检测结果。
本公开提供的一种SQL语句执行效率检测装置,可以获得目标SQL语句;获得目标SQL语句的当前版本执行计划和上一版本执行计划;基于当前版本执行计划和上一版本执行计划,检测目标SQL语句的执行效率是否降低,如果降低,则获得当前版本执行计划对应的第一对象集合和上一版本执行计划对应的第二对象集合,其中,所述第一对象集合包括所述当前版本执行计划关联的各对象,所述第二对象集合包括所述上一版本执行计划关联的各对象;根据第一对象集合和第二对象集合,检测出导致目标SQL语句的执行效率降低的备选因素并输出检测结果。本公开通过执行效率降低的目标SQL语句的当前版本执行计划对应的第一对象集合和上一版本执行计划对应的第二对象集合,可以高效检测出导致目标SQL语句的执行效率降低的备选因素,从而有利于运维人员及时进行优化,保障数据库的正常运行。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
所述SQL语句执行效率检测装置包括处理器和存储器,上述目标SQL语句获得单元100、执行计划获得单元200、执行效率检测单元300、对象集合获得单元400以及效率降低备选因素检测单元500等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来通过执行效率降低的目标SQL语句的当前版本执行计划对应的第一对象集合和上一版本执行计划对应的第二对象集合,可以高效检测出导致目标SQL语句的执行效率降低的备选因素,从而有利于运维人员及时进行优化,保障数据库的正常运行。
本公开实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现所述SQL语句执行效率检测方法。
本公开实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述SQL语句执行效率检测方法。
本公开实施例提供了一种电子设备,电子设备包括至少一个处理器、以及与处理器连接的至少一个存储器、总线;其中,处理器、存储器通过总线完成相互间的通信;处理器用于调用存储器中的程序指令,以执行上述的SQL语句执行效率检测方法。本文中的电子设备可以是服务器、PC、PAD、手机等。
本公开还提供了一种计算机程序产品,当在电子设备上执行时,适于执行初始化有SQL语句执行效率检测方法步骤的程序。
本公开是参照根据本公开实施例的方法、装置、电子设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理器以产生一个机器,使得通过计算机或其他可编程设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
在一个典型的配置中,电子设备包括一个或多个处理器(CPU)、存储器和总线。电子设备还可以包括输入/输出接口、网络接口等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本公开的实施例可提供为方法、系统或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本公开的实施例而已,并不用于限制本公开。对于本领域技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的权利要求范围之内。

Claims (10)

1.一种SQL语句执行效率检测方法,其特征在于,包括:
获得目标SQL语句;
获得所述目标SQL语句的当前版本执行计划和上一版本执行计划;
基于所述当前版本执行计划和所述上一版本执行计划,检测所述目标SQL语句的执行效率是否降低,如果降低,则获得所述当前版本执行计划对应的第一对象集合和所述上一版本执行计划对应的第二对象集合,其中,所述第一对象集合包括所述当前版本执行计划关联的各对象,所述第二对象集合包括所述上一版本执行计划关联的各对象;
根据所述第一对象集合和所述第二对象集合,检测出导致所述目标SQL语句的执行效率降低的备选因素并输出检测结果。
2.根据权利要求1所述的方法,其特征在于,所述获得目标SQL语句,包括:
对目标数据库中的各SQL语句:按照SQL计划哈希值进行分组并按照总逻辑读数值进行降序排序,获得排序靠前的第一数量的第一SQL语句;
对所述目标数据库中的各SQL语句:按照执行次数最多的所述第一SQL语句的SQL文本哈希值进行分组并按照单次平均执行逻辑读进行降序排序,获得排序靠前的第二数量的第二SQL语句;
对所述第一数量的所述第一SQL语句和所述第二数量的所述第二SQL语句进行去重处理,获得第三数量的目标SQL语句。
3.根据权利要求1所述的方法,其特征在于,所述基于所述当前版本执行计划和所述上一版本执行计划,检测所述目标SQL语句的执行效率是否降低,包括:
获得所述当前版本执行计划在首次执行时的第一执行目标数据,所述第一执行目标数据包括第一平均逻辑读数值;
获得所述上一版本执行计划在最后一次执行时的第二执行目标数据,所述第二执行目标数据包括第二平均逻辑读数值;
将所述第一平均逻辑读数值和第二平均逻辑读数值进行比对,确定所述目标SQL语句的执行效率是否降低。
4.根据权利要求1所述的方法,其特征在于,所述获得所述当前版本执行计划对应的第一对象集合和所述上一版本执行计划对应的第二对象集合,包括:
利用所述目标SQL语句的SQL计划哈希值和SQL文本哈希值,通过v$sql_plan视图筛选出所述当前版本执行计划对应的第一对象集合和所述上一版本执行计划对应的第二对象集合。
5.根据权利要求3所述的方法,其特征在于,所述第一执行目标数据还包括第一执行使用时间,所述第二执行目标数据还包括第二执行使用时间。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第一对象集合和所述第二对象集合,检测出导致所述目标SQL语句的执行效率降低的备选因素并输出检测结果,包括:
对所述第一对象集合和所述第二对象集合进行差集计算,获得第三对象集合和第四对象集合,其中,所述第三对象集合包括在所述第一对象集合存在且在所述第二对象集合中不存在的对象,所述第四对象集合包括在所述第二对象集合存在且在所述第一对象集合中不存在的对象;
对所述第一对象集合和所述第二对象集合进行并集计算,获得第五对象集合,其中,所述第五对象集合包括在所述第一对象集合中存在或在所述第二对象集合中存在的对象;
基于所述第一执行使用时间和所述第二执行使用时间,分别利用所述第三对象集合、所述第四对象集合和所述第五对象集合,确定所述目标SQL语句的执行效率降低的备选因素并输出检测结果。
7.根据权利要求6所述的方法,其特征在于,所述基于所述第一执行使用时间和所述第二执行使用时间,分别利用所述第三对象集合、所述第四对象集合和所述第五对象集合,确定所述目标SQL语句的执行效率降低的备选因素并输出检测结果,包括:
对所述第三对象集合中的任一对象:获得创建该对象的第一时间;
在所述第一时间大于所述第二执行使用时间且小于所述第一执行使用时间的情况下,确定所述目标SQL语句的执行效率降低的备选因素包括该对象被创建并输出包括该对象对应的对象信息的检测结果。
8.根据权利要求6所述的方法,其特征在于,所述基于所述第一执行使用时间和所述第二执行使用时间,分别利用所述第三对象集合、所述第四对象集合和所述第五对象集合,确定所述目标SQL语句的执行效率降低的备选因素并输出检测结果,包括:
对所述第四对象集合中的任一对象:检测该对象在目标数据库中是否存在,如果不存在,则确定该对象被删除的第二时间,如果存在,则确定该对象最后一次DDL操作的第三时间;
在所述第二时间大于所述第二执行使用时间且小于所述第一执行使用时间的情况下,确定所述目标SQL语句的执行效率降低的备选因素包括该对象被删除并输出包括该对象对应的对象信息的检测结果;
在所述第三时间大于所述第二执行使用时间且小于所述第一执行使用时间的情况下,确定所述目标SQL语句的执行效率降低的备选因素包括该对象失效并输出包括该对象对应的对象信息的检测结果。
9.根据权利要求6所述的方法,其特征在于,所述基于所述第一执行使用时间和所述第二执行使用时间,分别利用所述第三对象集合、所述第四对象集合和所述第五对象集合,确定所述目标SQL语句的执行效率降低的备选因素并输出检测结果,包括:
对所述第五对象集合中的任一对象:获得该对象进行统计信息收集的第四时间;
在所述第四时间与所述第一执行使用时间和所述第二执行使用时间满足预设大小关系条件的情况下,获得该对象的统计信息变化率;
基于所述统计信息变化率,计算该对象对应的目标变化值;
在该对象对应的所述目标变化值大于第一预设变化阈值的情况下,确定所述目标SQL语句的执行效率降低的备选因素包括该对象的所述统计信息变化率不稳定并输出包括该对象的所述统计信息变化率不稳定的检测结果;
在所述第五对象集合中的各对象对应的所述目标变化值均小于第二预设变化阈值的情况下,确定所述目标SQL语句的执行效率降低的备选因素包括动态采样失准并输出包括所述第五对象集合中的各对象的所述统计信息变化率的检测结果。
10.一种SQL语句执行效率检测装置,其特征在于,包括:目标SQL语句获得单元、执行计划获得单元、执行效率检测单元、对象集合获得单元以及效率降低备选因素检测单元,
所述目标SQL语句获得单元,用于获得目标SQL语句;
所述执行计划获得单元,用于获得所述目标SQL语句的当前版本执行计划和上一版本执行计划;
所述执行效率检测单元,用于基于所述当前版本执行计划和所述上一版本执行计划,检测所述目标SQL语句的执行效率是否降低,如果降低,则触发所述所述对象集合获得单元;
所述对象集合获得单元,用于获得所述当前版本执行计划对应的第一对象集合和所述上一版本执行计划对应的第二对象集合,其中,所述第一对象集合包括所述当前版本执行计划关联的各对象,所述第二对象集合包括所述上一版本执行计划关联的各对象;
效率降低备选因素检测单元,用于根据所述第一对象集合和所述第二对象集合,检测出导致所述目标SQL语句的执行效率降低的备选因素并输出检测结果。
CN202111387991.XA 2021-11-22 2021-11-22 一种sql语句执行效率检测方法及装置 Pending CN114077532A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111387991.XA CN114077532A (zh) 2021-11-22 2021-11-22 一种sql语句执行效率检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111387991.XA CN114077532A (zh) 2021-11-22 2021-11-22 一种sql语句执行效率检测方法及装置

Publications (1)

Publication Number Publication Date
CN114077532A true CN114077532A (zh) 2022-02-22

Family

ID=80284202

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111387991.XA Pending CN114077532A (zh) 2021-11-22 2021-11-22 一种sql语句执行效率检测方法及装置

Country Status (1)

Country Link
CN (1) CN114077532A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114996292A (zh) * 2022-05-05 2022-09-02 北京联华信科技有限公司 执行计划自动变更方法、装置、设备及可读存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114996292A (zh) * 2022-05-05 2022-09-02 北京联华信科技有限公司 执行计划自动变更方法、装置、设备及可读存储介质

Similar Documents

Publication Publication Date Title
US10671627B2 (en) Processing a data set
TWI738721B (zh) 任務調度方法和裝置
CN110399268B (zh) 一种异常数据检测的方法、装置及设备
CN111339175B (zh) 数据处理方法、装置、电子设备及可读存储介质
CN110019349A (zh) 语句预警方法、装置、设备及计算机可读存储介质
US11645179B2 (en) Method and apparatus of monitoring interface performance of distributed application, device and storage medium
CN110134738B (zh) 分布式存储系统资源预估方法、装置
WO2022252512A1 (zh) 根因分析方法、装置、电子设备、介质和程序
CN114461644A (zh) 一种数据采集方法、装置、电子设备及存储介质
JPWO2018122890A1 (ja) ログ分析方法、システムおよびプログラム
CN111581056B (zh) 基于人工智能的软件工程数据库维护与预警系统
CN113835918A (zh) 一种服务器故障分析方法及装置
CN114077532A (zh) 一种sql语句执行效率检测方法及装置
CN117271481A (zh) 数据库自动优化方法及设备
CN110196868A (zh) 基于分布式的工单流程监控方法
CN113220551A (zh) 指标趋势预测及预警方法、装置、电子设备及存储介质
CN114911865A (zh) 一种区块链虚拟货币数据中台及虚拟货币数据处理方法
CN109039695B (zh) 业务故障处理方法、装置及设备
CN109739883B (zh) 提升数据查询性能的方法、装置和电子设备
CN111427871B (zh) 数据处理方法、装置、设备
CN111209138A (zh) 数据存储系统的运维方法及装置
CN114564465A (zh) 数据处理方法、装置、设备和存储介质
CN113760872A (zh) 数据库监控方法及装置、计算机可读存储介质
CN116483735B (zh) 一种代码变更的影响分析方法、装置、存储介质及设备
CN117370158A (zh) 测试处理方法、系统、电子设备和介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination