CN109213664A - Sql语句的性能分析方法、装置、存储介质和电子设备 - Google Patents
Sql语句的性能分析方法、装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN109213664A CN109213664A CN201810967876.1A CN201810967876A CN109213664A CN 109213664 A CN109213664 A CN 109213664A CN 201810967876 A CN201810967876 A CN 201810967876A CN 109213664 A CN109213664 A CN 109213664A
- Authority
- CN
- China
- Prior art keywords
- sql statement
- sql
- index
- condition
- result set
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3452—Performance evaluation by statistical analysis
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Hardware Design (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了一种SQL语句的性能分析方法、装置、存储介质和电子设备。本公开通过获取SQL执行日志中被调用的多个SQL语句的资源消耗指标,其中资源消耗指标包括SQL语句对应的结果集的数据量,进而在所述SQL语句的资源消耗指标满足预定条件时,将对应的SQL语句标记为潜在的低性能语句。由此,可以较为准确地评估一个或一类SQL语句的性能。
Description
技术领域
本公开涉及数据库技术领域,具体涉及一种SQL语句的性能分析方法、装置、存储介质和电子设备。
背景技术
随着互联网的飞速发展,越来越多的商家使用互联网平台为用户提供服务。用户数量和数据种类的不断增长都对互联网平台的支持数据库提出了更高的要求。互联网应用服务器端的数据库管理系统需要承载海量的操作请求,如果某些查询、搜索操作产生耗时较长、搜索结果不够准确等问题,将会影响用户体验。
现有技术通常只评估SQL语句的执行时长,对于SQL语句的性能分析不够准确,使得部分潜在的低性能SQL语句无法被发现。
发明内容
有鉴于此,本公开提供一种SQL语句的性能分析方法、装置、存储介质和电子设备,以解决目前对于SQL语句的性能分析不准确的问题。
根据本公开的第一方面,提供一种SQL语句的性能分析方法,所述方法包括:
获取SQL执行日志,所述SQL执行日志包括被调用的多个SQL语句;
根据所述SQL执行日志获取一类SQL语句的资源消耗指标,所述资源消耗指标包括所述一类SQL语句对应的结果集的数据量指标;
在所述一类SQL语句的资源消耗指标满足预定条件时,将对应的SQL语句标记为潜在的低性能语句。
优选地,所述获取SQL执行日志包括:
在分布式数据库的各个数据节点上收集SQL节点执行日志并汇总获取所述SQL执行日志;或者
获取分布式数据库中间件存储的SQL执行日志。
优选地,所述一类SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的结果集的数据量指标满足第一条件,所述第一条件为:
所述一类SQL语句对应的结果集的数据量指标大于第一阈值;或者
所述一类SQL语句对应的结果集的数据量指标在所有类别的SQL语句的结果集的数据量指标中排名在最大的前n位中,所述n为大于等于1的预定整数。
优选地,所述资源消耗指标还包括所述一类SQL语句的执行时长指标和所述一类SQL语句影响的数据库的行数指标。
优选地,所述一类SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的结果集的数据量指标满足第一条件,或者,所述一类SQL语句的执行时长指标满足第二条件,或者,所述一类SQL语句影响的数据库的行数指标满足第三条件;
其中,所述第一条件为:
所述一类SQL语句对应的结果集的数据量指标大于第一阈值;或者
所述一类SQL语句对应的结果集的数据量指标在所有类别的SQL语句的结果集的数据量指标中排名在最大的前n位中,所述n为大于等于1的预定整数;
所述第二条件为:
所述一类SQL语句的执行时长指标大于第二阈值;或者
所述一类SQL语句的执行时长指标在所有类别的SQL语句的执行时长指标中排名在最大的前m位中,所述m为大于等于1的预定整数;
所述第三条件为:
所述一类SQL语句影响的数据库的行数指标大于第三阈值;或者
所述一类SQL语句影响的数据库的行数指标在所有类别的SQL语句影响的数据库的行数指标中排名在最大的前p位中,所述p为大于等于1的预定整数。
优选地,所述SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标和所述影响的数据库的行数指标的加权和满足第五条件;所述第五条件为:
所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标和所述影响的数据库的行数指标的加权和大于第五阈值;或者
所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标和所述影响的数据库的行数指标的加权和在所有类别的SQL语句的加权和中排名在最大的前i位中,所述i为大于等于1的预定整数。
优选地,所述资源消耗指标还包括所述一类SQL语句的访问频率指标。
根据本公开的第二方面,提供一种SQL语句的性能分析装置,所述装置包括:
语句获取单元,用于获取SQL执行日志,所述SQL执行日志包括被调用的多个SQL语句;
指标获取单元,用于根据所述SQL执行日志获取一类SQL语句的资源消耗指标,所述资源消耗指标包括所述一类SQL语句对应的结果集的数据量指标;
比较标记单元,用于在所述一类SQL语句的资源消耗指标满足预定条件时,将对应的SQL语句标记为潜在的低性能语句。
根据本公开的第三方面,提供一种计算机可读存储介质,其上存储计算机程序指令,其中,所述计算机程序指令在被处理器执行时实现如第一方面所述的方法。
根据本公开的第四方面,提供一种电子设备,包括存储器和处理器,其特征在于,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如第一方面所述的方法。
本公开通过获取SQL执行日志中被调用的多个SQL语句的资源消耗指标,其中资源消耗指标包括SQL语句对应的结果集的数据量,进而在所述SQL语句的资源消耗指标满足预定条件时,将对应的SQL语句标记为潜在的低性能语句。由此,可以较为准确地评估一个或一类SQL语句的性能。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是本公开第一实施例的SQL语句的性能分析方法的流程图;
图2是本公开第一实施例的方法中资源消耗指标满足预定条件的流程图;
图3是本公开第二实施例的一个可选的实现方式中资源消耗指标满足预定条件的流程图;
图4是本公开第二实施例的另一个可选的实现方式中资源消耗指标满足预定条件的流程图;
图5是本公开第三实施例的一个可选的实现方式中资源消耗指标满足预定条件的流程图;
图6是本公开第三实施例的另一个可选的实现方式中资源消耗指标满足预定条件的流程图;
图7是本公开第四实施例的一个可选的实现方式中资源消耗指标满足预定条件的流程图;
图8是本公开第四实施例的另一个可选的实现方式中资源消耗指标满足预定条件的流程图;
图9是本公开第五实施例的SQL语句的性能分析装置的示意图;
图10是本公开的电子设备的示意图;
图11-图12是本公开实施例的SQL语句的性能分析应用的界面示意图。
具体实施方式
以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本公开的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本公开的描述中,除非另有说明,“多个”的含义是两个或两个以上。
图1是本公开第一实施例的SQL语句的性能分析方法的流程图。在本实施例中,以对于SQL语句的性能分析过程为例进行说明,所述SQL语句被保存在互联网应用服务器端的数据库管理系统的SQL执行日志中。数据库管理系统需要承载海量的操作请求并将大量被调用的SQL语句存储在数据库中,如果这些SQL语句产生耗时较长、搜索结果不够准确等问题,将会影响用户体验。
如图1所示,本实施例的方法包括如下步骤:
步骤S100,获取SQL执行日志,所述SQL执行日志包括被调用的多个SQL语句。
SQL执行日志包括全部被调用过的SQL语句,因此获取SQL执行日志就能够获取已经被执行过(也即,被调用)的多个SQL语句以及对应的执行结果。可以通过各种方式获取SQL执行日志。在本实施例的一个可选的实现方式中,可以在分布式数据库的各个数据节点上收集SQL节点执行日志并汇总获取所述SQL执行日志。
分布式数据库是指利用高速计算机网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库,拥有更大的存储容量和更高的并发访问量。通常情况SQL执行日志会被保存在分布式数据库的不同数据节点中,因此需要在分布式数据库的各个数据节点上收集SQL节点执行日志并汇总从而获取所述SQL执行日志。具体地,可以根据SQL语句的数据量情况选择实时或以预定周期在分布式数据库的各个数据节点上收集SQL节点执行日志并汇总获取所述SQL执行日志。实时获取SQL执行日志的方式适用于SQL执行日志数据量较大的情况,以预定周期获取SQL执行日志的方式适用于SQL执行日志数据量较小的情况。
在本实施例的另一个可选的实现方式中,可以获取分布式数据库中间件存储的SQL执行日志。
数据库中间件是一种独立的系统软件或服务程序。在启用协议代理并运行驱动软件后,分布式应用软件通过中间件能够进行数据库操作请求,也即,进行SQL语句或与语句集的分发,并从数据库节点获取返回的执行结果向应用程序反馈。因此,数据库中间件实际处理了所有对分布式数据库的操作请求,并可以获得所有的执行结果。因此,数据库中间件的日志可以获得对于数据库的全部操作记录。分布式数据库中间件包括Tomcat、JBoss、WebSphere、dtporxy、dts等。dtproxy和dts均能够实现读写分离的功能(也即,查询操作与增删改操作分离,能够确保数据库产品的稳定性)。
步骤S200,根据所述SQL执行日志获取一类SQL语句的资源消耗指标,所述资源消耗指标包括所述SQL语句对应的结果集的数据量指标。
具体地,可以将每个SQL语句分别归为一类,由此可以分别对每个SQL语句进行性能分析。同时,也可以根据SQL语句的格式,将具有相同或类似格式(也即,满足预定的归类条件)的多个所述SQL语句归为一类,由此可以对相似的一类SQL语句进行性能分析。
在本步骤中,同时考虑两种SQL语句的分类情况能够较全面地分析SQL语句的性能的相似和差异。具体地,在将多个SQL语句归为一类时,需要获取这类SQL语句中所有的SQL语句的资源消耗指标的平均值。
对于基于互联网平台的应用,数据库操作的结果集需要返回到服务器端的应用程序,并由服务器端应用程序处理后返回给客户端。结果集的数据量对于应用程序进行处理的时长以及网络传输的时长均会有较大的影响。例如,在查询数据库返回的结果集的数据量操作10M时,远程的客户端应用程序通过网络接收结果集的时长就会大大增加,在客户端一侧显示查询结果的时间较长,严重影响用户体验。因此,SQL语句对应的结果集的数据量能够较好地反映SQL语句的性能,可以作为SQL语句的一项重要的资源消耗指标。
应理解,SQL语句的资源消耗指标还可以包括别的指标,例如SQL语句的执行次数、SQL语句占用的中央处理器资源等,可以根据实际需要获取不同的SQL语句的资源消耗指标并采用本实施例的方法对SQL语句进行性能分析。
步骤S300,在所述SQL语句的资源消耗指标满足预定条件时,将对应的SQL语句标记为潜在的低性能语句。
根据资源消耗指标不同,预定条件也有所不同。在所述SQL语句的资源消耗指标满足预定条件时,将对应的SQL语句标记为潜在的低性能语句。
在本实施例中,所述一类SQL语句的资源消耗指标包括所述一类SQL语句对应的结果集的数据量指标。图2是本公开第一实施例的方法中资源消耗指标满足预定条件的流程图。如图2所示,在一个可选的实现方式中,SQL语句对应的结果集的数据量指标满足第一条件,其中,第一条件为所述一类SQL语句对应的结果集的数据量平均值大于第一阈值。在另一个可选的实现方式中,第一条件为所述一类SQL语句对应的结果集的数据量平均值在所有类别的SQL语句的结果集的数据量平均值中排名在最大的前n位中,所述n为大于等于1的预定整数。采用阈值作为预定条件可以用于SQL语句数量较少或资源消耗指标差异较大的情况,采用排名作为预定条件可以用于SQL语句数量较多的情况。可以根据SQL语句的数量确定SQL语句的资源消耗指标的预定条件(也即,第一阈值或n的取值),并将满足预定条件的SQL语句标记为潜在的低性能语句。应理解,只有查询类型(select)的SQL语句考虑对应的结果集的数量。
当SQL语句仅存在显示查询结果的时间较长的问题时,SQL语句的资源耗费指标可以只包括所述SQL语句对应的结果集的数据量指标,由此可以较准确地评估SQL语句的性能。
本公开第二实施例的方法同样包括上述步骤S100-S300。在本实施例中,SQL语句的资源消耗指标及对应的预定条件有所不同。在本实施例中,SQL语句的资源消耗指标包括SQL语句对应的结果集的数据量指标、SQL语句的执行时长指标和SQL语句影响的数据库的行数指标。其中SQL语句的执行时长能够客观地反映SQL语句的查询过程消耗的时间。SQL语句影响的数据库的行数能够影响SQL语句对应的结果集的行数。也就是说,在SQL语句对应的结果集的数据量较大时,可能原因为SQL语句影响的数据库的行数较多,导致SQL语句对应的结果集的行数较多,也可能为SQL语句影响的数据库的行数较少,但SQL语句对应的结果集中包含较多的图片信息导致结果集的数据量较大。在SQL语句对应的结果集的数据量较大时,尽管SQL语句的执行时长可能较短,但从查询到显示查询结果的整个过程可能会耗费较长时间。
图3是本公开第二实施例的一个可选的实现方式中资源消耗指标满足预定条件的流程图。如图3所示,在本公开第二实施例的一个可选的实现方式中,所述一类SQL语句的资源消耗指标满足预定条件为:
3A、所述一类SQL语句对应的结果集的数据量平均值大于第一阈值。
3B、所述一类SQL语句的平均执行时长大于第二阈值。
3C、所述一类SQL语句影响的数据库的平均行数大于第三阈值。
3D、所述一类SQL语句对应的所述结果集的数据量平均值、所述平均执行时长和所述影响的数据库的平均行数的加权和大于第五阈值。
其中,3A、3B和3C使得在三个资源消耗指标中的任一项资源消耗指标大于预定阈值时将对应的该类SQL语句标记为潜在低性能语句,分别考虑了SQL语句的每一项资源消耗指标对SQL语句的性能的影响。3D根据资源消耗指标的重要性不同确定每项资源消耗指标的权重,从而能够综合考虑SQL语句的资源消耗指标对SQL语句的性能的影响。可以根据不同的情况确定上述阈值(在本实施例中,也即第一、第二、第三和第五阈值),并将满足对应条件的SQL语句标记为潜在低性能语句。
图4是本公开第二实施例的另一个可选的实现方式中资源消耗指标满足预定条件的流程图。如图4所示,在本公开第二实施例的另一个可选的实现方式中,SQL语句的资源消耗指标满足预定条件为:
4A、所述一类SQL语句对应的结果集的数据量平均值在所有类别的SQL语句的结果集的数据量平均值中排名在最大的前n位中,所述n为大于等于1的预定整数。
4B、所述一类SQL语句的平均执行时长在所有类别的SQL语句的平均执行时长中排名在最大的前m位中,所述m为大于等于1的预定整数。
4C、所述SQL语句影响的数据库的平均行数在所有类别的SQL语句影响的数据库的平均行数中排名在最大的前p位中,所述p为大于等于1的预定整数。
4D、所述SQL语句对应的所述结果集的数据量平均值、所述平均执行时长和所述影响的数据库的平均行数的加权和在所有类别的SQL语句的加权和中排名在最大的前i位中,所述i为大于等于1的预定整数。
与本公开第二实施例的一个可选的实现方式类似,4A、4B和4C使得在三个资源消耗指标中的任一项资源消耗指标在所有类别的SQL语句的资源消耗指标中排名分别满足在前n、m和p时将对应的该类SQL语句标记为潜在低性能语句,分别考虑了SQL语句的每一项资源消耗指标对SQL语句的性能的影响。4D根据资源消耗指标的重要性不同确定每项资源消耗指标的权重,从而能够综合考虑SQL语句的资源消耗指标对SQL语句的性能的影响。可以根据不同的情况确定n、m、p和i的取值,并将资源消耗指标的排名分别在前n、m、p、i的SQL语句标记为潜在低性能语句。
其中,3A和4A被称为第一条件,3B和4B被称为第二条件,3C和4C被称为第三条件,3D和4D被称为第五条件。
应理解,本公开第二实施例不限于上述两种可选的实现方式,还可以考虑部分资源消耗指标大于预定阈值,另一部分资源消耗指标的排名在最大的前N位(其中N为大于等于1的预定整数)的情况。由此能够根据不同需要更全面且准确地分析SQL语句的性能。
在本公开第二实施例的又一个可选的实现方式中,还可以在第一条件、第二条件和第三条件均不满足的情况下再考虑是否满足第五条件,由此可以在保证性能分析的准确性的同时适当降低计算量。
在SQL语句存在查询时间较长且显示查询结果的时间也较长的问题时,所述资源消耗指标还可以包括SQL语句的执行时长指标和SQL语句影响的数据库的行数指标,由此可以较准确地评估SQL语句的性能。
本公开第三实施例的方法同样包括上述步骤S100-S300。在本实施例中,SQL语句的资源消耗指标及对应的预定条件有所不同。在本实施例中,资源消耗指标包括SQL语句对应的结果集的数据量指标和SQL语句的访问频率指标。其中SQL语句的访问频率表示预定时间段内一类SQL语句的调用数量,能够客观地反映在某段时间内对数据库某部分的访问次数。在SQL语句的访问频率过高时,可能说明数据库对应的部分的访问情况出现了异常。
图5是本公开第三实施例的一个可选的实现方式中资源消耗指标满足预定条件的流程图。如图5所示,在本公开第三实施例的一个可选的实现方式中,SQL语句的资源消耗指标满足预定条件为:
5A、所述一类SQL语句对应的结果集的数据量平均值大于第一阈值。
5B、所述一类SQL语句的平均访问频率大于第四阈值。
5C、所述一类SQL语句对应的所述结果集的数据量和所述SQL语句的访问频率的加权和的平均值大于第六阈值。
其中,5A和5B使得在两个资源消耗指标中的任一项资源消耗指标大于预定阈值时将对应的该类SQL语句标记为潜在低性能语句,分别考虑了SQL语句的每一项资源消耗指标对SQL语句的性能的影响。5C根据资源消耗指标的重要性不同确定每项资源消耗指标的权重,从而能够综合考虑SQL语句的资源消耗指标对SQL语句的性能的影响。可以根据不同的情况确定上述阈值(在本实施例中,也即第一、第四和第六阈值),并将大于预定阈值的SQL语句标记为潜在低性能语句。
图6是本公开第三实施例的另一个可选的实现方式中资源消耗指标满足预定条件的流程图。如图6所示,在本公开第三实施例的另一个可选的实现方式中,SQL语句的资源消耗指标满足预定条件为:
6A、所述一类SQL语句对应的结果集的数据量平均值在所有类别的SQL语句的结果集的数据量平均值中排名在最大的前n位中,所述n为大于等于1的预定整数。
6B、所述一类SQL语句的平均访问频率在所有类别的SQL语句的平均访问频率中排名在最大的前q位中,所述q为大于等于1的预定整数。
6C、所述一类SQL语句对应的所述结果集的数据量和所述访问频率的加权和的平均值在所有类别的SQL语句的加权和的平均值中排名在最大的前j位中,所述j为大于等于1的预定整数。
与本公开第三实施例的一个可选的实现方式类似,6A和6B使得在两个资源消耗指标中的任一项资源消耗指标在所有类别的SQL语句的资源消耗指标中排名分别满足在前n、q时将对应的该类SQL语句标记为潜在低性能语句,分别考虑了SQL语句的每一项资源消耗指标对SQL语句的性能的影响。6C根据资源消耗指标的重要性不同确定每项资源消耗指标的权重,从而能够综合考虑SQL语句的资源消耗指标对SQL语句的性能的影响。可以根据不同的情况确定n、q和j的取值,并将资源消耗指标的排名分别在前n、q、j的SQL语句标记为潜在低性能语句。
其中,5A和6A被称为第一条件,5B和6B被称为第四条件,5C和6C被称为第六条件。
同样地,应理解,本公开第三实施例不限于上述两种可选的实现方式,还可以考虑部分资源消耗指标大于预定阈值,另一部分资源消耗指标的排名在最大的前N位(其中N为大于等于1的预定整数)的情况。由此能够根据不同需要更全面且准确地分析SQL语句的性能。
在本公开第三实施例的又一个可选的实现方式中,还可以在第一条件和第四条件均不满足的情况下再考虑是否满足第六条件,由此可以在保证性能分析的准确性的同时适当降低计算量。
在SQL语句存在显示查询结果时间过长和访问频率异常的问题时,所述资源消耗指标还可以包括SQL语句的访问频率指标,由此可以较准确地评估SQL语句的性能。
本公开第四实施例的方法同样包括上述步骤S100-S300。在本实施例中,SQL语句资源消耗指标及对应的预定条件有所不同。在本实施例中,资源消耗指标包括SQL语句对应的结果集的数据量指标SQL语句的执行时长指标、SQL语句影响的数据库的行数指标和SQL语句的访问频率指标。
图7是本公开第四实施例的一个可选的实现方式中资源消耗指标满足预定条件的流程图。如图7所示,在本公开第四实施例的一个可选的实现方式中,SQL语句的资源消耗指标满足预定条件为:
7A、所述一类SQL语句对应的结果集的数据量平均值大于第一阈值。
7B、所述一类SQL语句的平均执行时长大于第二阈值。
7C、所述一类SQL语句影响的数据库的平均行数大于第三阈值。
7D、所述一类SQL语句的平均访问频率大于第四阈值。
7E、所述一类SQL语句对应的所述结果集的数据量平均值、所述平均执行时长、所述影响的数据库的平均行数和所述平均访问频率的加权和大于第七阈值。
其中,7A、7B、7C和7D使得在四个资源消耗指标中的任一项资源消耗指标大于预定阈值时将对应的该类SQL语句标记为潜在低性能语句,分别考虑了SQL语句的每一项资源消耗指标对SQL语句的性能的影响。7E根据资源消耗指标的重要性不同确定每项资源消耗指标的权重,从而能够综合考虑SQL语句的资源消耗指标对SQL语句的性能的影响。可以根据不同的情况确定上述阈值(在本实施例中,也即第一、第二、第三、第四和第七阈值),并将大于预定阈值的SQL语句标记为潜在低性能语句。
图8是本公开第四实施例的另一个可选的实现方式中资源消耗指标满足预定条件的流程图。如图8所示,在本公开第四实施例的一个可选的实现方式中,SQL语句的资源消耗指标满足预定条件为:
8A、所述一类SQL语句对应的结果集的数据量平均值在所有类别的SQL语句的结果集的数据量平均值中排名在最大的前n位中,所述n为大于等于1的预定整数。
8B、所述一类SQL语句的平均执行时长在所有类别的SQL语句的平均执行时长中排名在最大的前m位中,所述m为大于等于1的预定整数。
8C、所述一类SQL语句影响的数据库的平均行数在所有类别的SQL语句影响的数据库的平均行数中排名在最大的前p位中,所述p为大于等于1的预定整数。
8D、所述一类SQL语句的平均访问频率在所有类别的SQL语句的平均访问频率中排名满足在最大的前q位中,所述q为大于等于1的预定整数。
8E、所述一类SQL语句对应的所述结果集的数据量平均值、所述平均执行时长、所述影响的数据库的平均行数和所述平均访问频率的加权和在所有类别的SQL语句的加权和中排名在最大的前k位中,所述k为大于等于1的预定整数。
与本公开第四实施例的一个可选的实现方式类似,8A、8B、8C和8D使得在四个资源消耗指标中的任一项资源消耗指标在所有类别的SQL语句的资源消耗指标中排名分别满足在前n、m、p、q时将对应的该类SQL语句标记为潜在低性能语句,分别考虑了SQL语句的每一项资源消耗指标对SQL语句的性能的影响。8E根据资源消耗指标的重要性不同确定每项资源消耗指标的权重,从而能够综合考虑SQL语句的资源消耗指标对SQL语句的性能的影响。可以根据不同的情况确定n、m、p、q和k的取值,并将资源消耗指标的排名分别在前n、m、p、q、k的SQL语句标记为潜在低性能语句。
其中,7A和8A被称为第一条件,7B和8B被称为第二条件,7C和8C被称为第三条件,7D和8D被称为第四条件,7E和8E被称为第七条件。
例如,在本实施例中,一类SQL语句的资源消耗指标为:I=w1c1+w2c2+w3c3+w4c4,其中I为一类SQL语句对应的结果集的数据量平均值、平均执行时长、影响的数据库的平均行数和平均访问频率的加权和,w1、w2、w3和w4分别为四个资源消耗指标的权重,c1、c2、c3和c4分别为每个资源消耗指标的平均值。SQL语句对应的结果集的数据量指标和SQL语句的访问频率指标为较为重要的SQL语句的资源消耗指标,因此可以赋予这两个资源消耗指标较大的权重,如w1=3,w4=2.5。SQL语句的执行时长指标和SQL语句影响的数据库的行数指标则赋予较小的权重,如w2=0.9,w3=0.8。
同样地,应理解,本公开第四实施例不限于上述两种可选的实现方式,还可以考虑部分资源消耗指标大于预定阈值,另一部分资源消耗指标的排名在最大的前N位(其中N为大于等于1的预定整数)的情况。由此能够根据不同需要更全面且准确地分析SQL语句的性能。
在本公开第四实施例的又一个可选的实现方式中,还可以在第一条件、第二条件、第三条件和第四条件均不满足的情况下再考虑是否满足第七条件,由此可以在保证性能分析的准确性的同时适当降低计算量。
在SQL语句存在查询时间较长、显示查询结果的时间较长且访问频率异常的问题时,所述资源消耗指标还可以包括SQL语句的执行时长指标、SQL语句影响的数据库的行数指标和SQL语句的访问频率,由此可以较准确地评估SQL语句的性能。
本公开通过获取SQL执行日志中被调用的多个SQL语句的资源消耗指标,其中资源消耗指标包括SQL语句对应的结果集的数据量,进而在所述SQL语句的资源消耗指标满足预定条件时,将对应的SQL语句标记为潜在的低性能语句。由此,可以评估一个或一类SQL语句的性能。
图9是本公开第五实施例的SQL语句的性能分析装置的示意图。如图9所示,本公开的SQL语句的性能分析装置9包括语句获取单元91,指标获取单元92和比较标记单元93。
其中,语句获取单元91用于获取SQL执行日志,其中,SQL执行日志包括被调用的多个SQL语句。指标获取单元92用于根据所述SQL执行日志获取一类SQL语句的资源消耗指标,其中,资源消耗指标包括所述一类SQL语句对应的结果集的数据量指标。比较标记单元93用于在所述一类SQL语句的资源消耗指标满足预定条件时,将对应的SQL语句标记为潜在的低性能语句。
进一步地,所述语句获取单元91用于在分布式数据库的各个数据节点上收集SQL节点执行日志并汇总获取所述SQL执行日志,或者获取分布式数据库中间件存储的SQL执行日志。
进一步地,所述一类SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的结果集的数据量指标满足第一条件。
其中,第一条件为所述一类SQL语句对应的结果集的数据量指标大于第一阈值,或者所述一类SQL语句对应的结果集的数据量指标在所有类别的SQL语句的结果集的数据量指标中排名在最大的前n位中,其中n为大于等于1的预定整数。
进一步地,所述资源消耗指标还包括所述一类SQL语句的执行时长指标和所述一类SQL语句影响的数据库的行数指标。
进一步地,所述一类SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的结果集的数据量指标满足第一条件,或者,所述一类SQL语句的执行时长指标满足第二条件,或者,所述一类SQL语句影响的数据库的行数指标满足第三条件。
其中,第一条件为所述一类SQL语句对应的结果集的数据量指标大于第一阈值,或者所述一类SQL语句对应的结果集的数据量指标在所有类别的SQL语句的结果集的数据量指标中排名在最大的前n位中,其中n为大于等于1的预定整数。第二条件为所述一类SQL语句的执行时长指标大于第二阈值,或者所述一类SQL语句的执行时长指标在所有类别的SQL语句的执行时长指标中排名在最大的前m位中,其中m为大于等于1的预定整数。第三条件为所述一类SQL语句影响的数据库的行数指标大于第三阈值,或者所述一类SQL语句影响的数据库的行数指标在所有类别的SQL语句影响的数据库的行数指标中排名在最大的前p位中,其中p为大于等于1的预定整数。
进一步地,所述SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标和所述影响的数据库的行数指标的加权和满足第五条件。
其中,第五条件为所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标和所述影响的数据库的行数指标的加权和大于第五阈值,或者所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标和所述影响的数据库的行数指标的加权和在所有类别的SQL语句的加权和中排名在最大的前i位中,其中i为大于等于1的预定整数。
进一步地,所述资源消耗指标还包括所述一类SQL语句的访问频率指标。
进一步地,所述一类SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的结果集的数据量指标满足第一条件,或者,所述一类SQL语句的访问频率指标满足第四条件。
其中,第一条件为所述一类SQL语句对应的结果集的数据量指标大于第一阈值,或者所述一类SQL语句对应的结果集的数据量指标在所有类别的SQL语句的结果集的数据量指标中排名在最大的前n位,其中n为大于等于1的预定整数。第四条件为所述一类SQL语句的访问频率指标大于第四阈值,或者所述一类SQL语句的访问频率指标在所有类别的SQL语句的访问频率指标中排名在最大的前q位中,其中q为大于等于1的预定整数。
进一步地,所述SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的所述结果集的数据量指标和所述访问频率指标的加权和满足第六条件。
其中,第六条件为所述一类SQL语句对应的所述结果集的数据量指标和所述访问频率指标的加权和大于第六阈值,或者所述一类SQL语句对应的所述结果集的数据量指标和所述访问频率指标的加权和在所有类别的SQL语句的加权和中排名在最大的前j位中,其中j为大于等于1的预定整数。
进一步地,所述资源消耗指标还包括所述一类SQL语句的执行时长指标、所述一类SQL语句影响的数据库的行数指标和所述一类SQL语句的访问频率指标。
进一步地,所述SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的结果集的数据量指标满足第一条件,或者,所述一类SQL语句的执行时长指标满足第二条件,或者,所述一类SQL语句影响的数据库的行数指标满足第三条件,或者,所述一类SQL语句的访问频率指标满足第四条件。
其中,第一条件为所述一类SQL语句对应的结果集的数据量指标大于第一阈值,或者所述一类SQL语句对应的结果集的数据量指标在所有类别的SQL语句的结果集的数据量指标中排名在最大的前n位中,其中n为大于等于1的预定整数。第二条件为所述一类SQL语句的执行时长指标大于第二阈值,或者所述一类SQL语句的执行时长指标在所有类别的SQL语句的执行时长指标中排名在最大的前m位中,其中m为大于等于1的预定整数。第三条件为所述一类SQL语句影响的数据库的行数指标大于第三阈值,或者所述一类SQL语句影响的数据库的行数指标在所有类别的SQL语句影响的数据库的行数指标中排名在最大的前p位中,其中p为大于等于1的预定整数。第四条件为所述一类SQL语句的访问频率指标大于第四阈值,或者所述一类SQL语句的访问频率指标在所有类别的SQL语句的访问频率指标中排名在最大的前q位中,其中q为大于等于1的预定整数。
进一步地,所述SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标、所述影响的数据库的行数指标和所述访问频率指标的加权和满足第七条件。
其中,第七条件为所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标、所述影响的数据库的行数指标和所述访问频率指标的加权和大于第七阈值,或者所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标、所述影响的数据库的行数指标和所述访问频率指标的加权和在所有类别的SQL语句的加权和中排名在最大的前k位中,其中k为大于等于1的预定整数。
进一步地,将每个SQL语句分别归为一类;或者
根据SQL语句的格式将多个所述SQL语句归为一类。
本实施例的SQL语句的性能分析装置通过获取SQL执行日志中被调用的多个SQL语句的资源消耗指标,其中资源消耗指标包括SQL语句对应的结果集的数据量,进而在所述SQL语句的资源消耗指标满足预定条件时,将对应的SQL语句标记为潜在的低性能语句。从而较准确地分析SQL语句的性能。
图10是本公开的电子设备的示意图。图10所示的电子设备为通用数据处理装置,其包括通用的计算机硬件结构,其至少包括处理器101和存储器102。处理器101和存储器102通过总线103连接。存储器102适于存储处理器101可执行的指令或程序。处理器101可以是独立的微处理器,也可以是一个或者多个微处理器集合。由此,处理器101通过执行存储器102所存储的命令,从而执行如上所述的本公开实施例的方法流程实现对于数据的处理和对于其他装置的控制。总线103将上述多个组件连接在一起,同时将上述组件连接到显示控制器104和显示装置以及输入/输出(I/O)装置105。输入/输出(I/O)装置105可以是鼠标、键盘、调制解调器、网络接口、触控输入装置、体感输入装置、打印机以及本领域公知的其他装置。典型地,输入/输出(I/O)装置105通过输入/输出(I/O)控制器106与系统相连。
其中,存储器102可以存储软件组件,例如操作系统、通信模块、交互模块以及应用程序。以上所述的每个模块和应用程序都对应于完成一个或多个功能和在公开实施例中描述的方法的一组可执行程序指令。
上述根据本公开实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应理解,流程图和/或框图的每个块以及流程图图例和/或框图中的块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供至通用计算机、专用计算机或其它可编程数据处理设备的处理器,以产生机器,使得(经由计算机或其它可编程数据处理设备的处理器执行的)指令创建用于实现流程图和/或框图块或块中指定的功能/动作的装置。
同时,如本领域技术人员将意识到的,本公开实施例的各个方面可以被实现为系统、方法或计算机程序产品。因此,本公开实施例的各个方面可以采取如下形式:完全硬件实现方式、完全软件实现方式(包括固件、常驻软件、微代码等)或者在本文中通常可以都称为“电路”、“模块”或“系统”的将软件方面与硬件方面相结合的实现方式。此外,本公开的方面可以采取如下形式:在一个或多个计算机可读介质中实现的计算机程序产品,计算机可读介质具有在其上实现的计算机可读程序代码。
可以利用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是如(但不限于)电子的、磁的、光学的、电磁的、红外的或半导体系统、设备或装置,或者前述的任意适当的组合。计算机可读存储介质的更具体的示例(非穷尽列举)将包括以下各项:具有一根或多根电线的电气连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、光纤、便携式光盘只读存储器(CD-ROM)、光存储装置、磁存储装置或前述的任意适当的组合。在本公开实施例的上下文中,计算机可读存储介质可以为能够包含或存储由指令执行系统、设备或装置使用的程序或结合指令执行系统、设备或装置使用的程序的任意有形介质。
计算机可读信号介质可以包括传播的数据信号,所述传播的数据信号具有在其中如在基带中或作为载波的一部分实现的计算机可读程序代码。这样的传播的信号可以采用多种形式中的任何形式,包括但不限于:电磁的、光学的或其任何适当的组合。计算机可读信号介质可以是以下任意计算机可读介质:不是计算机可读存储介质,并且可以对由指令执行系统、设备或装置使用的或结合指令执行系统、设备或装置使用的程序进行通信、传播或传输。
用于执行针对本公开各方面的操作的计算机程序代码可以以一种或多种编程语言的任意组合来编写,所述编程语言包括:面向对象的编程语言如Java、Smalltalk、C++、PHP、Python等;以及常规过程编程语言如“C”编程语言或类似的编程语言。程序代码可以作为独立软件包完全地在用户计算机上、部分地在用户计算机上执行;部分地在用户计算机上且部分地在远程计算机上执行;或者完全地在远程计算机或服务器上执行。在后一种情况下,可以将远程计算机通过包括局域网(LAN)或广域网(WAN)的任意类型的网络连接至用户计算机,或者可以与外部计算机进行连接(例如通过使用因特网服务供应商的因特网)。
图11-图12是本公开实施例的SQL语句的性能分析应用的界面示意图。如图11所示,点击界面中的“SQL语句的性能分析”按钮111能够触发启动SQL语句的性能分析应用。性能分析应用被启动后,开始自动对SQL执行日志中的一类SQL语句进行性能分析。如图12所示,以一个SQL语句作为一类为例进行说明。SQL语句显示窗口121显示进行性能分析的SQL语句和语句的所属类别。具体地,SQL语句为select*from table_2where col2=‘abcd’,所属类别为类别1。SQL语句资源消耗显示窗口122显示SQL语句对应的资源消耗指标及是否满足预定条件。具体地,该SQL语句的资源消耗指标包括结果集的数据量,该资源消耗指标不满足对应的第一条件;资源消耗指标还包括结果集的数据量、执行时长和影响的数据库的行数的加权和,该资源消耗指标满足对应的第五条件。可以在该SQL语句对应的任一资源消耗指标满足对应的预定条件时将该语句标记为潜在低性能语句并展示在SQL语句性能展示窗口123中。具体地,SQL语句性能展示窗口123中的显示内容可以为“该SQL语句为潜在低性能语句,建议进行优化”。
本公开实施例公开了A1、一种SQL语句的性能分析方法,所述方法包括:
获取SQL执行日志,所述SQL执行日志包括被调用的多个SQL语句;
根据所述SQL执行日志获取一类SQL语句的资源消耗指标,所述资源消耗指标包括所述一类SQL语句对应的结果集的数据量指标;
在所述一类SQL语句的资源消耗指标满足预定条件时,将对应的SQL语句标记为潜在的低性能语句。
A2、如A1所述的方法中,所述获取SQL执行日志包括:
在分布式数据库的各个数据节点上收集SQL节点执行日志并汇总获取所述SQL执行日志;或者
获取分布式数据库中间件存储的SQL执行日志。
A3、如A1所述的方法中,所述一类SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的结果集的数据量指标满足第一条件;所述第一条件为:
所述一类SQL语句对应的结果集的数据量指标大于第一阈值;或者
所述一类SQL语句对应的结果集的数据量指标在所有类别的SQL语句的结果集的数据量指标中排名在最大的前n位中,所述n为大于等于1的预定整数。
A4、如A1所述的方法中,所述资源消耗指标还包括所述一类SQL语句的执行时长指标和所述一类SQL语句影响的数据库的行数指标。
A5、如A4所述的方法中,所述一类SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的结果集的数据量指标满足第一条件,或者,所述一类SQL语句的执行时长指标满足第二条件,或者,所述一类SQL语句影响的数据库的行数指标满足第三条件;
其中,所述第一条件为:
所述一类SQL语句对应的结果集的数据量指标大于第一阈值;或者
所述一类SQL语句对应的结果集的数据量指标在所有类别的SQL语句的结果集的数据量指标中排名在最大的前n位中,所述n为大于等于1的预定整数;
所述第二条件为:
所述一类SQL语句的执行时长指标大于第二阈值;或者
所述一类SQL语句的执行时长指标在所有类别的SQL语句的执行时长指标中排名在最大的前m位中,所述m为大于等于1的预定整数;
所述第三条件为:
所述一类SQL语句影响的数据库的行数指标大于第三阈值;或者
所述一类SQL语句影响的数据库的行数指标在所有类别的SQL语句影响的数据库的行数指标中排名在最大的前p位中,所述p为大于等于1的预定整数。
A6、如A4所述的方法中,所述SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标和所述影响的数据库的行数指标的加权和满足第五条件;所述第五条件为:
所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标和所述影响的数据库的行数指标的加权和大于第五阈值;或者
所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标和所述影响的数据库的行数指标的加权和在所有类别的SQL语句的加权和中排名在最大的前i位中,所述i为大于等于1的预定整数。
A7、如A1所述的方法中,所述资源消耗指标还包括所述一类SQL语句的访问频率指标。
A8、如A7所述的方法中,所述一类SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的结果集的数据量指标满足第一条件,或者,所述一类SQL语句的访问频率指标满足第四条件;
其中,所述第一条件为:
所述一类SQL语句对应的结果集的数据量指标大于第一阈值;或者
所述一类SQL语句对应的结果集的数据量指标在所有类别的SQL语句的结果集的数据量指标中排名在最大的前n位,所述n为大于等于1的预定整数;
所述第四条件为:
所述一类SQL语句的访问频率指标大于第四阈值;或者
所述一类SQL语句的访问频率指标在所有类别的SQL语句的访问频率指标中排名在最大的前q位中,所述q为大于等于1的预定整数。
A9、如A7所述的方法中,所述SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的所述结果集的数据量指标和所述访问频率指标的加权和满足第六条件;所述第六条件为:
所述一类SQL语句对应的所述结果集的数据量指标和所述访问频率指标的加权和大于第六阈值;或者
所述一类SQL语句对应的所述结果集的数据量指标和所述访问频率指标的加权和在所有类别的SQL语句的加权和中排名在最大的前j位中,所述j为大于等于1的预定整数。
A10、如A1所述的方法中,所述资源消耗指标还包括所述一类SQL语句的执行时长指标、所述一类SQL语句影响的数据库的行数指标和所述一类SQL语句的访问频率指标。
A11、如A10所述的方法中,所述SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的结果集的数据量指标满足第一条件,或者,所述一类SQL语句的执行时长指标满足第二条件,或者,所述一类SQL语句影响的数据库的行数指标满足第三条件,或者,所述一类SQL语句的访问频率指标满足第四条件;
其中,所述第一条件为:
所述一类SQL语句对应的结果集的数据量指标大于第一阈值;或者
所述一类SQL语句对应的结果集的数据量指标在所有类别的SQL语句的结果集的数据量指标中排名在最大的前n位中,所述n为大于等于1的预定整数;
所述第二条件为:
所述一类SQL语句的执行时长指标大于第二阈值;或者
所述一类SQL语句的执行时长指标在所有类别的SQL语句的执行时长指标中排名在最大的前m位中,所述m为大于等于1的预定整数;
所述第三条件为:
所述一类SQL语句影响的数据库的行数指标大于第三阈值;或者
所述一类SQL语句影响的数据库的行数指标在所有类别的SQL语句影响的数据库的行数指标中排名在最大的前p位中,所述p为大于等于1的预定整数;
所述第四条件为:
所述一类SQL语句的访问频率指标大于第四阈值;或者
所述一类SQL语句的访问频率指标在所有类别的SQL语句的访问频率指标中排名在最大的前q位中,所述q为大于等于1的预定整数。
A12、如A10所述的方法中,所述SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标、所述影响的数据库的行数指标和所述访问频率指标的加权和满足第七条件;所述第七条件为:
所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标、所述影响的数据库的行数指标和所述访问频率指标的加权和大于第七阈值;或者
所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标、所述影响的数据库的行数指标和所述访问频率指标的加权和在所有类别的SQL语句的加权和中排名在最大的前k位中,所述k为大于等于1的预定整数。
A13、如A1所述的方法中,将每个SQL语句分别归为一类;或者
根据SQL语句的格式将多个所述SQL语句归为一类。
本公开实施例还公开了B1、一种SQL语句的性能分析装置,所述装置包括:
语句获取单元,用于获取SQL执行日志,所述SQL执行日志包括被调用的多个SQL语句;
指标获取单元,用于根据所述SQL执行日志获取一类SQL语句的资源消耗指标,所述资源消耗指标包括所述一类SQL语句对应的结果集的数据量指标;
比较标记单元,用于在所述一类SQL语句的资源消耗指标满足预定条件时,将对应的SQL语句标记为潜在的低性能语句。
B2、如B1所述的装置中,所述语句获取单元用于在分布式数据库的各个数据节点上收集SQL节点执行日志并汇总获取所述SQL执行日志;或者获取分布式数据库中间件存储的SQL执行日志。
B3、如B1所述的装置中,所述一类SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的结果集的数据量指标满足第一条件;所述第一条件为:
所述一类SQL语句对应的结果集的数据量指标大于第一阈值;或者
所述一类SQL语句对应的结果集的数据量指标在所有类别的SQL语句的结果集的数据量指标中排名在最大的前n位中,所述n为大于等于1的预定整数。
B4、如B1所述的装置中,所述资源消耗指标还包括所述一类SQL语句的执行时长指标和所述一类SQL语句影响的数据库的行数指标。
B5、如B4所述的装置中,所述一类SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的结果集的数据量指标满足第一条件,或者,所述一类SQL语句的执行时长指标满足第二条件,或者,所述一类SQL语句影响的数据库的行数指标满足第三条件;
其中,所述第一条件为:
所述一类SQL语句对应的结果集的数据量指标大于第一阈值;或者
所述一类SQL语句对应的结果集的数据量指标在所有类别的SQL语句的结果集的数据量指标中排名在最大的前n位中,所述n为大于等于1的预定整数;
所述第二条件为:
所述一类SQL语句的执行时长指标大于第二阈值;或者
所述一类SQL语句的执行时长指标在所有类别的SQL语句的执行时长指标中排名在最大的前m位中,所述m为大于等于1的预定整数;
所述第三条件为:
所述一类SQL语句影响的数据库的行数指标大于第三阈值;或者
所述一类SQL语句影响的数据库的行数指标在所有类别的SQL语句影响的数据库的行数指标中排名在最大的前p位中,所述p为大于等于1的预定整数。
B6、如B4所述的装置中,所述SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标和所述影响的数据库的行数指标的加权和满足第五条件;所述第五条件为:
所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标和所述影响的数据库的行数指标的加权和大于第五阈值;或者
所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标和所述影响的数据库的行数指标的加权和在所有类别的SQL语句的加权和中排名在最大的前i位中,所述i为大于等于1的预定整数。
B7、如B1所述的装置中,所述资源消耗指标还包括所述一类SQL语句的访问频率指标。
B8、如B7所述的装置中,所述一类SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的结果集的数据量指标满足第一条件,或者,所述一类SQL语句的访问频率指标满足第四条件;
其中,所述第一条件为:
所述一类SQL语句对应的结果集的数据量指标大于第一阈值;或者
所述一类SQL语句对应的结果集的数据量指标在所有类别的SQL语句的结果集的数据量指标中排名在最大的前n位,所述n为大于等于1的预定整数;
所述第四条件为:
所述一类SQL语句的访问频率指标大于第四阈值;或者
所述一类SQL语句的访问频率指标在所有类别的SQL语句的访问频率指标中排名在最大的前q位中,所述q为大于等于1的预定整数。
B9、如B7所述的装置中,所述SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的所述结果集的数据量指标和所述访问频率指标的加权和满足第六条件;所述第六条件为:
所述一类SQL语句对应的所述结果集的数据量指标和所述访问频率指标的加权和大于第六阈值;或者
所述一类SQL语句对应的所述结果集的数据量指标和所述访问频率指标的加权和在所有类别的SQL语句的加权和中排名在最大的前j位中,所述j为大于等于1的预定整数。
B10、如B1所述的装置中,所述资源消耗指标还包括所述一类SQL语句的执行时长指标、所述一类SQL语句影响的数据库的行数指标和所述一类SQL语句的访问频率指标。
B11、如B10所述的装置中,所述SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的结果集的数据量指标满足第一条件,或者,所述一类SQL语句的执行时长指标满足第二条件,或者,所述一类SQL语句影响的数据库的行数指标满足第三条件,或者,所述一类SQL语句的访问频率指标满足第四条件;
其中,所述第一条件为:
所述一类SQL语句对应的结果集的数据量指标大于第一阈值;或者
所述一类SQL语句对应的结果集的数据量指标在所有类别的SQL语句的结果集的数据量指标中排名在最大的前n位中,所述n为大于等于1的预定整数;
所述第二条件为:
所述一类SQL语句的执行时长指标大于第二阈值;或者
所述一类SQL语句的执行时长指标在所有类别的SQL语句的执行时长指标中排名在最大的前m位中,所述m为大于等于1的预定整数;
所述第三条件为:
所述一类SQL语句影响的数据库的行数指标大于第三阈值;或者
所述一类SQL语句影响的数据库的行数指标在所有类别的SQL语句影响的数据库的行数指标中排名在最大的前p位中,所述p为大于等于1的预定整数;
所述第四条件为:
所述一类SQL语句的访问频率指标大于第四阈值;或者
所述一类SQL语句的访问频率指标在所有类别的SQL语句的访问频率指标中排名在最大的前q位中,所述q为大于等于1的预定整数。
B12、如B11所述的装置中,所述SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标、所述影响的数据库的行数指标和所述访问频率指标的加权和满足第七条件;所述第七条件为:
所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标、所述影响的数据库的行数指标和所述访问频率指标的加权和大于第七阈值;或者
所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标、所述影响的数据库的行数指标和所述访问频率指标的加权和在所有类别的SQL语句的加权和中排名在最大的前k位中,所述k为大于等于1的预定整数。
B13、如B1所述的装置中,将每个SQL语句分别归为一类;或者根据SQL语句的格式将多个所述SQL语句归为一类。
本公开实施例还公开了C1、一种计算机可读存储介质,其上存储计算机程序指令,其中,所述计算机程序指令在被处理器执行时实现如A1-A13中任一项所述的方法。
本公开实施例还公开了D1、一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如A1-A13中任一项所述的方法。
以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本公开可以有各种改动和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种SQL语句的性能分析方法,其特征在于,所述方法包括:
获取SQL执行日志,所述SQL执行日志包括被调用的多个SQL语句;
根据所述SQL执行日志获取一类SQL语句的资源消耗指标,所述资源消耗指标包括所述一类SQL语句对应的结果集的数据量指标;
在所述一类SQL语句的资源消耗指标满足预定条件时,将对应的SQL语句标记为潜在的低性能语句。
2.根据权利要求1所述的SQL语句的性能分析方法,其特征在于,所述获取SQL执行日志包括:
在分布式数据库的各个数据节点上收集SQL节点执行日志并汇总获取所述SQL执行日志;或者
获取分布式数据库中间件存储的SQL执行日志。
3.根据权利要求1所述的SQL语句的性能分析方法,其特征在于,所述一类SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的结果集的数据量指标满足第一条件;所述第一条件为:
所述一类SQL语句对应的结果集的数据量指标大于第一阈值;或者
所述一类SQL语句对应的结果集的数据量指标在所有类别的SQL语句的结果集的数据量指标中排名在最大的前n位中,所述n为大于等于1的预定整数。
4.根据权利要求1所述的SQL语句的性能分析方法,其特征在于,所述资源消耗指标还包括所述一类SQL语句的执行时长指标和所述一类SQL语句影响的数据库的行数指标。
5.根据权利要求4所述的SQL语句的性能分析方法,其特征在于,所述一类SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的结果集的数据量指标满足第一条件,或者,所述一类SQL语句的执行时长指标满足第二条件,或者,所述一类SQL语句影响的数据库的行数指标满足第三条件;
其中,所述第一条件为:
所述一类SQL语句对应的结果集的数据量指标大于第一阈值;或者
所述一类SQL语句对应的结果集的数据量指标在所有类别的SQL语句的结果集的数据量指标中排名在最大的前n位中,所述n为大于等于1的预定整数;
所述第二条件为:
所述一类SQL语句的执行时长指标大于第二阈值;或者
所述一类SQL语句的执行时长指标在所有类别的SQL语句的执行时长指标中排名在最大的前m位中,所述m为大于等于1的预定整数;
所述第三条件为:
所述一类SQL语句影响的数据库的行数指标大于第三阈值;或者
所述一类SQL语句影响的数据库的行数指标在所有类别的SQL语句影响的数据库的行数指标中排名在最大的前p位中,所述p为大于等于1的预定整数。
6.根据权利要求4所述的SQL语句的性能分析方法,其特征在于,所述SQL语句的资源消耗指标满足预定条件为所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标和所述影响的数据库的行数指标的加权和满足第五条件;所述第五条件为:
所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标和所述影响的数据库的行数指标的加权和大于第五阈值;或者
所述一类SQL语句对应的所述结果集的数据量指标、所述执行时长指标和所述影响的数据库的行数指标的加权和在所有类别的SQL语句的加权和中排名在最大的前i位中,所述i为大于等于1的预定整数。
7.根据权利要求1所述的SQL语句的性能分析方法,其特征在于,所述资源消耗指标还包括所述一类SQL语句的访问频率指标。
8.一种SQL语句的性能分析装置,其特征在于,所述装置包括:
语句获取单元,用于获取SQL执行日志,所述SQL执行日志包括被调用的多个SQL语句;
指标获取单元,用于根据所述SQL执行日志获取一类SQL语句的资源消耗指标,所述资源消耗指标包括所述一类SQL语句对应的结果集的数据量指标;
比较标记单元,用于在所述一类SQL语句的资源消耗指标满足预定条件时,将对应的SQL语句标记为潜在的低性能语句。
9.一种计算机可读存储介质,其上存储计算机程序指令,其特征在于,所述计算机程序指令在被处理器执行时实现如权利要求1-7中任一项所述的方法。
10.一种电子设备,包括存储器和处理器,其特征在于,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810967876.1A CN109213664A (zh) | 2018-08-23 | 2018-08-23 | Sql语句的性能分析方法、装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810967876.1A CN109213664A (zh) | 2018-08-23 | 2018-08-23 | Sql语句的性能分析方法、装置、存储介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109213664A true CN109213664A (zh) | 2019-01-15 |
Family
ID=64989653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810967876.1A Pending CN109213664A (zh) | 2018-08-23 | 2018-08-23 | Sql语句的性能分析方法、装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109213664A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113297245A (zh) * | 2020-05-29 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 获取执行信息的方法及装置 |
CN113326246A (zh) * | 2020-02-28 | 2021-08-31 | 华为技术有限公司 | 一种数据库管理系统性能预估的方法、装置及系统 |
CN113901074A (zh) * | 2021-09-26 | 2022-01-07 | 广州虎牙科技有限公司 | 即席查询的异常确定方法、装置、电子设备及介质 |
WO2022068540A1 (zh) * | 2020-09-30 | 2022-04-07 | 深圳前海微众银行股份有限公司 | 一种数据库状态的确定方法及装置、设备、存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7325016B1 (en) * | 2001-12-11 | 2008-01-29 | Sprint Communications Company L.P. | Monitoring database performance by obtaining SQL addresses for SQL statements |
US20090077017A1 (en) * | 2007-09-18 | 2009-03-19 | Oracle International Corporation | Sql performance analyzer |
CN102393842A (zh) * | 2011-06-28 | 2012-03-28 | 用友软件股份有限公司 | 指令处理装置和指令处理方法 |
US20140207756A1 (en) * | 2012-12-19 | 2014-07-24 | International Business Machines Corporation | Using temporary performance objects for enhanced query performance |
US20140337283A1 (en) * | 2013-05-09 | 2014-11-13 | International Business Machines Corporation | Comparing database performance without benchmark workloads |
CN104820663A (zh) * | 2014-01-30 | 2015-08-05 | 西门子公司 | 发现低性能的sql语句以及预测sql语句性能的方法和装置 |
CN105183614A (zh) * | 2015-11-03 | 2015-12-23 | 华夏银行股份有限公司 | 一种数据库故障预测方法及装置 |
CN105653607A (zh) * | 2015-12-23 | 2016-06-08 | 北京奇虎科技有限公司 | Sql日志收集分析方法及装置 |
CN106445795A (zh) * | 2016-09-26 | 2017-02-22 | 中国工商银行股份有限公司 | 一种数据库sql效率检测方法及装置 |
CN108197306A (zh) * | 2018-01-30 | 2018-06-22 | 平安科技(深圳)有限公司 | Sql语句处理方法、装置、计算机设备和存储介质 |
-
2018
- 2018-08-23 CN CN201810967876.1A patent/CN109213664A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7325016B1 (en) * | 2001-12-11 | 2008-01-29 | Sprint Communications Company L.P. | Monitoring database performance by obtaining SQL addresses for SQL statements |
US20090077017A1 (en) * | 2007-09-18 | 2009-03-19 | Oracle International Corporation | Sql performance analyzer |
CN102393842A (zh) * | 2011-06-28 | 2012-03-28 | 用友软件股份有限公司 | 指令处理装置和指令处理方法 |
US20140207756A1 (en) * | 2012-12-19 | 2014-07-24 | International Business Machines Corporation | Using temporary performance objects for enhanced query performance |
US20140337283A1 (en) * | 2013-05-09 | 2014-11-13 | International Business Machines Corporation | Comparing database performance without benchmark workloads |
CN104820663A (zh) * | 2014-01-30 | 2015-08-05 | 西门子公司 | 发现低性能的sql语句以及预测sql语句性能的方法和装置 |
CN105183614A (zh) * | 2015-11-03 | 2015-12-23 | 华夏银行股份有限公司 | 一种数据库故障预测方法及装置 |
CN105653607A (zh) * | 2015-12-23 | 2016-06-08 | 北京奇虎科技有限公司 | Sql日志收集分析方法及装置 |
CN106445795A (zh) * | 2016-09-26 | 2017-02-22 | 中国工商银行股份有限公司 | 一种数据库sql效率检测方法及装置 |
CN108197306A (zh) * | 2018-01-30 | 2018-06-22 | 平安科技(深圳)有限公司 | Sql语句处理方法、装置、计算机设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
刘玉红等: "数据库查询优化方法的研究与探索", 《电子设计工程》 * |
尹为民等: "《数据库原理与技术》", 30 June 2007, 武汉大学出版社 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113326246A (zh) * | 2020-02-28 | 2021-08-31 | 华为技术有限公司 | 一种数据库管理系统性能预估的方法、装置及系统 |
WO2021169231A1 (zh) * | 2020-02-28 | 2021-09-02 | 华为技术有限公司 | 一种数据库管理系统性能预估的方法、装置及系统 |
US11940966B2 (en) | 2020-02-28 | 2024-03-26 | Huawei Technologies Co., Ltd. | Method, apparatus, and system for estimating database management system performance |
CN113297245A (zh) * | 2020-05-29 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 获取执行信息的方法及装置 |
WO2022068540A1 (zh) * | 2020-09-30 | 2022-04-07 | 深圳前海微众银行股份有限公司 | 一种数据库状态的确定方法及装置、设备、存储介质 |
CN113901074A (zh) * | 2021-09-26 | 2022-01-07 | 广州虎牙科技有限公司 | 即席查询的异常确定方法、装置、电子设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11922329B2 (en) | Systems for second-order predictive data analytics, and related methods and apparatus | |
US20200257992A1 (en) | Systems for time-series predictive data analytics, and related methods and apparatus | |
CN110795509B (zh) | 一种数据仓库的指标血缘关系图的构建方法、装置和电子设备 | |
US9020907B2 (en) | Method and system for ranking affinity degree among functional blocks | |
US10360212B2 (en) | Guided keyword-based exploration of data | |
US20220004718A1 (en) | Ontology-Driven Conversational Interface for Data Analysis | |
EP3529755A1 (en) | Systems for predictive data analytics, and related methods and apparatus | |
CN109213664A (zh) | Sql语句的性能分析方法、装置、存储介质和电子设备 | |
CN108183927A (zh) | 一种分布式系统中链路调用的监控方法及系统 | |
US10191946B2 (en) | Answering natural language table queries through semantic table representation | |
JP2007141247A (ja) | 電子ビジネス通信におけるデータ要素の使用の追跡 | |
CN110490625A (zh) | 用户偏好确定方法及装置、电子设备、存储介质 | |
CN112219200A (zh) | 基于多个查询解释的基于方面的查询改进 | |
CN110807016B (zh) | 一种应用于金融业务的数据仓库构建方法、装置和电子设备 | |
CN108932625A (zh) | 用户行为数据的分析方法、装置、介质和电子设备 | |
US11487801B2 (en) | Dynamic data visualization from factual statements in text | |
CN109657991B (zh) | 元数据质量评估方法、装置、电子设备、存储介质 | |
CN112069783A (zh) | 一种病历输入法及其输入系统 | |
CN105740434B (zh) | 网络信息评分方法及装置 | |
CN109685560A (zh) | 大数据处理方法、装置、介质及电子设备 | |
Atoum et al. | Towards resolving software quality-in-use measurement challenges | |
US10671932B1 (en) | Software application selection models integration | |
US10831511B2 (en) | Customized application programming interface presentation | |
US20140372076A1 (en) | Providing known distribution patterns associated with specific measures and metrics | |
US20210342737A1 (en) | Ai/ml based proactive system to improve sales productivity by categorizing and determining relevant news |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190115 |
|
RJ01 | Rejection of invention patent application after publication |