CN110119403A - Sql优化方法、装置、电子设备及可读存储介质 - Google Patents

Sql优化方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN110119403A
CN110119403A CN201910266901.8A CN201910266901A CN110119403A CN 110119403 A CN110119403 A CN 110119403A CN 201910266901 A CN201910266901 A CN 201910266901A CN 110119403 A CN110119403 A CN 110119403A
Authority
CN
China
Prior art keywords
sql
data
duration
executed
target
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.)
Granted
Application number
CN201910266901.8A
Other languages
English (en)
Other versions
CN110119403B (zh
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.)
Beijing Sankuai Online Technology Co Ltd
Original Assignee
Beijing Sankuai Online Technology Co Ltd
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 Beijing Sankuai Online Technology Co Ltd filed Critical Beijing Sankuai Online Technology Co Ltd
Priority to CN201910266901.8A priority Critical patent/CN110119403B/zh
Publication of CN110119403A publication Critical patent/CN110119403A/zh
Application granted granted Critical
Publication of CN110119403B publication Critical patent/CN110119403B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/242Query formulation
    • G06F16/2433Query languages
    • 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/2453Query optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种SQL优化方法、装置、电子设备及可读存储介质。所述方法,包括:获取已执行SQL的执行时长和第一原子指标数据,以及待执行的目标SQL的第二原子指标数据;基于所述已执行SQL的执行时长和所述第一原子指标数据,获取所述目标SQL的优化规则参数;根据所述优化规则参数以及所述第二原子指标数据,生成所述目标SQL的优化策略。

Description

SQL优化方法、装置、电子设备及可读存储介质
技术领域
本发明涉及数据库管理技术领域,具体涉及一种SQL优化方法、装置、电子设备及可读存储介质。
背景技术
在数据库环境中,特别是关系型数据库中,会使用SQL(Structured QueryLanguage,结构化查询语言)语句。而且,随着大数据时代的到来,数据库应用越来越多,处理的数据量也越来越大,处理逻辑也越来越复杂,通常的应用己经不再是几个简单的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优化方法。
根据本发明的SQL优化方法,可以获取已执行SQL的执行时长和第一原子指标数据,以及待执行的目标SQL的第二原子指标数据;基于所述已执行SQL的执行时长和所述第一原子指标数据,获取所述目标SQL的优化规则参数;根据所述优化规则参数以及所述第二原子指标数据,生成所述目标SQL的优化策略。由此解决了现有的SQL优化方法容易造成资源浪费,且导致整体优化效果不佳的技术问题。取得了在有效避免资源浪费的同时提高优化效果的有益效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种SQL优化方法的步骤流程图;
图2示出了根据本发明一个实施例的一种SQL优化方法的步骤流程图;
图3示出了根据本发明一个实施例的一种SQL优化装置的结构示意图;以及
图4示出了根据本发明一个实施例的一种SQL优化装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
详细介绍本发明实施例提供的一种SQL优化方法。
参照图1,示出了本发明实施例中一种SQL优化方法的步骤流程图。
步骤110,获取已执行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的执行时长之和,具体的可以根据需求进行预先设置,对此本发明实施例不加以限定。
已执行SQL的执行时长可以理解为相应已执行SQL从开始执行到执行结束时的时间长度。
步骤120,基于所述已执行SQL的执行时长和所述第一原子指标数据,获取所述目标SQL的优化规则参数。
如前述,在实际应用中,每个SQL都是由数据表、字段、关联等组成。那么不同SQL中包含的数据表可能存在相同的部分,因此基于各个已执行SQL的执行时长和第一原子指标数据,可以预估得到目标SQL的执行情况。因此,在本发明实施例中,可以基于各个已执行SQL的执行时长和所述第一原子指标数据,获取所述目标SQL的优化规则参数。
其中的优化规则参数具体包含的内容可以根据需求进行预先设置,对此本发明实施例不加以限定。例如,可以设置优化规则参数包括用以预估目标SQL执行时长的时长预估参数,以及针对目标SQL进行内部优化和模型优化的优化规则参数,等等。
步骤130,根据所述优化规则参数以及所述第二原子指标数据,生成所述目标SQL的优化策略。
在基于各个已执行SQL得到当前的优化规则参数之后,则可以根据所述优化规则参数以及目标SQL的第二原子指标数据,生成目标SQL的优化策略。
其中,优化策略所包含的具体内容也可以根据需求进行预先设置,对此本发明实施例也不加以限定。而且优化策略与优化策略之间的对应关系也可以根据需求进行预先设置,对此本发明实施例也不加以限定。
例如,优化策略可以包括针对目标SQL字段查询的精细化优化、分区数量的优化,目标SQL中包含数据表的扩充优化,等等。而且,如果优化规则参数包括了基于已执行SQL获取得到的历史分区临界值,那么可以设置如果根据目标SQL的第二原子指标数据,得到目标SQL的总查询分区大于该历史分区临界值,则可以针对目标SQL生成减少查询分区量的优化策略,等等。
根据本发明的SQL优化方法,可以获取已执行SQL的执行时长和第一原子指标数据,以及待执行的目标SQL的第二原子指标数据;基于所述已执行SQL的执行时长和所述第一原子指标数据,获取所述目标SQL的优化规则参数;根据所述优化规则参数以及所述第二原子指标数据,生成所述目标SQL的优化策略。由此取得了在有效避免资源浪费的同时提高优化效果的有益效果。
实施例二
详细介绍本发明实施例提供的一种SQL优化方法。
参照图2,示出了本发明实施例中一种SQL优化方法的步骤流程图。
步骤210,获取已执行SQL的执行时长和第一原子指标数据,以及待执行的目标SQL的第二原子指标数据。
步骤220,根据所述第一原子指标数据以及所述已执行SQL的执行时长,获取所述目标SQL的时长预估参数。
如前述,在实际应用中,已执行SQL中可能包含于目标SQL同样的数据表,为了预估目标SQL的执行时长,则可以参考各个已执行SQL的执行时长,分别获取目标SQL中各个数据表的执行时长、数据表的关联时长,等等时长预估参数,从而可以预估得到目标SQL的执行时长。那么首先则需要根据所述各个已执行SQL的第一原子指标数据以及执行时长,获取所述目标SQL的时长预估参数。
其中,时长估计参数具体包含的内容可以根据需求进行预先设置,对此本发明实施例不加以限定。而且每个时长预估参数与执行时长以及第一原子指标数据之间的对应关系也可以根据需求进行预先设置,本发明实施例不加以限定。例如,可以设置目标SQL的时长预估擦参数包括已执行SQL中包括的每个数据表的执行时长、每两个数据表之间的关联时长、每个表分区之间的引用时长,等等。
可选地,在本发明实施例中,所述步骤220进一步可以包括:
子步骤221,根据所述第一原子指标数据中包含的每个数据表的数据量和总查询分区数,以及所述已执行SQL的执行时长,获取每个所述数据表的单分区查询时长;
如前述,在本发明实施例中,可以通过解析得到各个已执行SQL的第一原子指标数据,而且在第一原子指标数据中可以包括相应已执行SQL的中包含的数据表,以及每个数据表的数据量和总查询分区数。那么则可以根据所述第一原子指标数据中包含的每个数据表的数据量和总查询分区数,以及所述已执行SQL的执行时长,获取每个所述数据表的单分区查询时长。
其中,单分区查询时长与每个数据表的数据量和总查询分区数之间、以及相应SQL的执行时长之间的对应关系可以根据需求或经验等进行预先设置,对此本发明实施例不加以限定。
在实际应用中,同一数据表的每个表分区的查询时长一般相差无几,因为理论上数据表的各分区数据量级相差不大。而因为不同数据表的数据量差距较大,因此不同数据表的单分区查询时长一般不相同。
因此,在本发明实施例中,可以设置数据表的单分区查询时长为相应数据表的使用时长与相应数据表中包含的总查询分区数之间的比值,其中数据表的使用时长可以为相应已执行SQL的执行时长与相应数据表的数据量在相应已执行SQL中所占比例的乘积,也即tij=Ti*(dij/Di)/Nij。
其中,tij为第i个已执行SQL中的第j个数据表的单分区查询时长,T为第i个已执行SQL的执行时长,dij为第i个已执行SQL中的第j个数据表的数据量,Di表示第i个已执行SQL中包含的全部数据表的总数据量,Nij表示第i个已执行SQL中的第j个数据表的总查询分区数。
其中,每个数据表的总查询分区数可以理解为相应数据表在其所属SQL执行时,其中被查询的表分区的数量。例如,假设数据表tab1中包含10个表分区,但是在相应SQL被执行时,被查询的表分区为8个,那么对于数据表tab1而言,其总查询分区数为8。
子步骤222,根据所述已执行SQL的执行时长,以及所述第一原子指标数据中的总关联次数和总数据量,获取所述已执行SQL的复杂度时长。
另外,考虑到待执行的目标SQL中可能存在没有被已执行SQL覆盖的数据表。例如针对新增的数据表进行查询,而根据各个已执行SQL则无法获取该新增的数据表的单分区查询时长,所以单纯基于单分区查询时长预估目标SQL的执行时长,容易导致预估结果准确性较低的问题。
所以,在本发明实施例中,为了提高预估结果的准确性,可以增加SQL复杂度时长的计算。其中,每个已执行SQL的复杂度时长与相应已执行SQL的执行时长,以及相应已执行SQL的总关联次数和总数据量之间的对应关系可以根据需求进行预先设置,对此本发明实施例不加以限定。
可选地,在本发明实施例中,所述子步骤222进一步可以包括:
子步骤2221,根据所述已执行SQL的执行时长、所述第一原子指标数据中的总关联次数,以及预设的关联权重,获取所述已执行SQL的单次关联时长;
子步骤2222,根据所述已执行SQL的执行时长、所述第一原子指标数据中的总数据量,以及预设的查询权重,获取所述已执行SQL的万条数据查询时长;
子步骤2223,根据所述单次关联时长和所述万条数据查询时长,获取所述已执行SQL的复杂度时长。
优选地,在本发明实施例中,可以设置已执行SQL的复杂度时长包括单次关联时长和万条数据查询时长两部分,那么则可以分别根据所述已执行SQL的执行时长、所述第一原子指标数据中的总关联次数,以及预设的关联权重,获取所述已执行SQL的单次关联时长,以及根据所述已执行SQL的执行时长、所述第一原子指标数据中的总数据量,以及预设的查询权重,获取所述已执行SQL的万条数据查询时长,进而根据所述单次关联时长和所述万条数据查询时长,获取所述已执行SQL的复杂度时长。
其中的关联权重和查询权重都可以根据需求或经验等进行预先设置,对此本发明实施例不加以限定。一般而言,可以设置关联权重和查询权重为大于0且小于1,而且关联权重和查询权重可以相同,也可以不同。例如,可以设置关联权重和查询权重均为0.5,等等。
而且,已执行SQL的单次关联时长与相应已执行SQL的执行时长和总关联次数,以及预设的关联权重之间的对应关系,已执行SQL的万条数据查询时长与相应已执行SQL的执行时长和总数据量,以及预设的查询权重之间的对应关系,复杂度时长与单次关联时长和万条数据查询时长之间的对应关系也都可以根据需求或经验等进行预先设置,对此本发明实施例均不加以限定。
例如,可以设置已执行SQL的单次关联时长=相应已执行SQL的执行时长*关联权重/相应已执行SQL的总关联次数;万条数据查询时长=相应已执行SQL的执行时长*查询权重*10000/相应已执行SQL的总数据量;复杂度时长=单次关联时长+万条数据查询时长。
步骤230,根据所述第一原子指标数据,确定所述目标SQL的优化匹配参数。
在实际应用中,需要参照SQL的执行情况确定其优化策略,那么则需要执行相应的SQL,而且需要获知SQL进行优化的条件,而在本发明实施例中,为了避免必须执行相应的SQL,可以参照历史已执行的SQL估计目标SQL的优化匹配参数。其中,优化匹配参数具体包含的内容可以根据需求进行预先设置,对此本发明实施例不加以限定。
例如,可以设置优化匹配参数包括基于各个已执行SQL的引用字段占比获取得到的历史引用字段占比阈值,和基于各个已执行SQL的表分区数量获取的历史查询分区阈值,以及可以针对目标SQL进行模型扩展的目标字段等模型优化参数,等等。
可选地,在本发明实施例中,所述步骤230进一步可以包括:
子步骤231,根据所述第一原子指标数据,获取所述已执行SQL的的历史引用字段占比、历史查询分区,以及数据表的关联次数和被引用字段的引用次数;
其中,历史引用字段占比,可以指任一已执行SQL中最终的查询字段占相应已执行SQL总查询字段的比例。例如,假设一已执行SQL总共有20个字段,但查询结果中只使用了5个字段,则该已执行SQL的历史引用字段占比为1/4。
历史查询分区可以指各个已执行SQL中每个表被查询过的分区数量,例如,某一已执行SQL中包含包含2张表,其中表1中包含10个表分区,且被查询过的表分区为8,表2中包含10个表分区,且被查询过的表分区为5,但是在该SQL执行过程中,被查询过的表分区数量为13,那么该已执行SQL的历史查询分区则可以为13。
数据表的关联次数可以理解为各个已执行SQL中数据表之间的关联次数;被引用字段的引用次数可以包括各个已执行SQL中每个被引用字段的引用次数。
子步骤232,根据所述已执行SQL的历史引用字段占比以及历史查询分区,获取所述目标SQL的SQL优化参数,所述SQL优化参数包括历史引用字段占比阈值,和/或历史查询分区阈值;
在获取得到各个已执行SQL的历史引用字段占比和历史查询分区之后,则可以根据所述已执行SQL的历史引用字段占比以及历史查询分区,获取所述目标SQL的SQL优化参数。其中,SQL优化参数与各个已执行SQL的历史引用字段占比以及历史查询分区之间的对应关系可以根据需求进行预先设置,对此本发明实施例不加以限定。
例如,可以将所有已执行SQL的历史引用字段占比按照从小到大的顺序进行排序,进而取排序后的历史引用字段占比序列在第一预设比例位置处的历史引用字段占比为临界值,然后设置历史引用字段占比阈值为小于该临界值。其中的第一预设比例可以根据需求进行预先设置,对此本发明实施例不加以限定。
例如,可以设置第一预设比例为80%,如果将各个已执行SQL的历史引用字段占比按照从小到大的顺序进行排序后得到的历史引用字段占比序列为:a2、a4、a10、a5、a7、a9、a3、a6、a8、a1,其中ai表示第1个已执行SQL的历史引用字段占比。那么此时则可以设置目标SQL的历史引用字段占比阈值为小于a6。
相应地,可以将所有已执行SQL的历史查询分区按照从大到小的顺序进行排序,进而取排序后的历史查询分区序列在第二预设比例位置处的历史查询分区为临界值,然后设置历史查询分区阈值为大于该临界值。其中的第二预设比例可以根据需求进行预先设置,而且第二预设比例可以与前述的第一预设比例相同,也可以不同,对此本发明实施例不加以限定。
例如,可以设置第二预设比例为80%,如果将各个已执行SQL的历史查询分区按照从大到小的顺序进行排序后得到的历史查询分区序列为:b3、b4、b7、b5、b9、b8、b6、b2、b10、b1,其中bi表示第1个已执行SQL的历史查询分区。那么此时则可以设置目标SQL的历史引用字段占比阈值为大于b2。
子步骤233,根据所述数据表的关联次数和被引用字段的引用次数,以及预设的优化比例,获取所述目标SQL的模型优化参数。
在实际应用中,对于同一SQL中的两个关联数据表A和B而言,A和B之间的关联次数较多,且数据表B中的部分字段C1和C2可能被数据表A多次引用,那么为了提高SQL的执行效率,则可以建议将数据表B中被数据表A多次引用的字段C1和C2扩充到数据表A中。在本发明实施例中,可以定义模型优化参数包括上述需要进行数据扩充的目标数据表、待扩充的目标字段、获取目标字段的源数据表,等等。
其中预设的优化比例可以包括基于关联次数和/或引用次数的优化比例,具体的可以根据需求进行预先设置,对此本发明实施例不加以限定。
例如,可以设置优化比例为两个数据表之间的关联次数大于等于n1,且被引用字段的引用次数大于等于n2,等等。那么此时如果上述的数据表A和B之间的关联次数大于等于n1,且数据表A对数据表B中的字段C1的引用次数大于等于n2,而对字段C2的引用次数小于n2,那么则可以得到目标SQL的模型优化参数包括源数据表为数据表B,目标数据表为数据表A,目标字段为字段C1。或者,也可以设置优化比例为关联次数和/或引用次数最大的前n3个字段,等等。
需要说明的时,在本发明实施例中,步骤230可以与步骤220同时执行,也可以在步骤220之前执行,而且还可以只执行步骤220和230中的一个步骤,具体的可以根据需求进行预先设置,对此本发明实施例不加以限定。
步骤240,根据所述时长预估参数,以及所述第二原子指标数据,获取所述目标SQL的预估执行时长,并在所述目标SQL执行前提示所述预估执行时长。
在实际应用中,可能存在有些SQL的执行时长过长,且无结果并导致资源浪费。那么在本发明实施例中,为了避免上述情况,可以在目标SQL执行之前,预估其执行时长并在执行前进行提示,从而可以避免超时的SQL重复执行。那么则可以根据所述时长预估参数,以及所述第二原子指标数据,获取所述目标SQL的预估执行时长,并在所述目标SQL执行前提示所述预估执行时长。
如前述,时长预估参数可以包括已执行SQL中包括的每个数据表的执行时长、每两个数据表之间的关联时长、每个表分区之间的引用时长,等等。而且基于第二原子指标数据还可以获取得到目标SQL中包含的数据表,以及数据表之间的关联关系,等等。那么则可以基于时长预估参数获取得到目标SQL中包含的每个数据表的执行时长、数据表之间的关联时长,等等。进而则可以预估得到目标SQL的预估执行时长。
可选地,在本发明实施例中,所述步骤240进一步可以包括:
子步骤241,根据所述第一原子指标数据和所述第二原子指标数据,获取所述目标SQL中被所述已执行SQL覆盖的数据表的第一数量,以及所述目标SQL中包含的数据表的第二数量;
子步骤242,根据所述第一数量和所述第二数量,获取所述目标SQL的时长预估系数;
子步骤243,根据所述单分区查询时长、所述单次关联时长以及所述时长预估系数,获取所述目标SQL的预估执行时长,并在所述目标SQL执行前提示所述预估执行时长。
如前述,在实际应用中,在目标SQL中可能存在不被各个已执行SQL覆盖的数据表,那么基于时长预估参数则可能无法准确预估得到相应数据表的执行时长,从而影响最终得到的预估执行时长的准确性。因此,在本发明实施例中,在获取单分区查询时长的同时还获取得到单次关联时长,以提高最终得到的预估执行时长的准确性。
那么为了平衡单分区查询时长和单次关联时长针对预估执行时长的重要程度,可以设置一时长预估系数。具体的可以根据所述第一原子指标数据和所述第二原子指标数据,获取所述目标SQL中被所述已执行SQL覆盖的数据表的第一数量,以及所述目标SQL中包含的数据表的第二数量。
例如,假设目标SQL中包含数据表A和B,而已执行SQL中包含数据表A、D、F,那么则可以得到目标SQL中被所述已执行SQL覆盖的数据表为数据表A,且第一数量为1,而第二数量为2。
进而则可以根据所述第一数量和所述第二数量,获取所述目标SQL的时长预估系数。其中,时长预估系数和第一数量以及第二数量之间的对应关系可以根据需求或者是经验等进行预先设置,对此本发明实施例不加以限定。例如,可以设置时长预估系数为第一数量与第二数量的比值,等等。
最后则可以根据所述单分区查询时长、所述单次关联时长以及所述时长预估系数,获取所述目标SQL的预估执行时长,并在所述目标SQL执行前提示所述预估执行时长。其中,预估执行时长与单分区查询时长、所述单次关联时长以及所述时长预估系数之间的对应关系也可以根据需求或者经验等进行预先设置,对此本发明实施例也不加以限定。
例如,如果设置预估执行时长=目标SQL中所有数据表的执行时长*时长预估系数+复杂度时长*(1-时长预估系数),其中每个数据表的执行时长可以为相应数据表包含的表分区数量与相应数据表的单分区查询时长的乘积,而复杂度时长则可以为目标SQL中数据表的关联次数与单次关联时长的乘积。
例如,假设经解析得到已执行SQL包括SQL1,且SQL1中包括tab1和tab2,SQL1的执行时长为50分钟(m,minute),在SQL1的执行过程中tab1的总查询分区数为1,tab2的总查询分区数为1,tab1的数据量为400000,tab2的数据量为100000;目标SQL中包含tab1、tab2和tab3,且tab1的表分区数量为2,数据量为400000,tab2的表分区数量为2,数据量为100000,tab3的表分区数量为1,数据量为100000,预设的关联权重为0.5,预设的查询权重为0.5,而且由于SQL1包含两个数据表,所以两个数据表之间的关联次数为1,而目标SQL中包含三个数据表之间的关联次数为2。
那么基于已执行SQL1则可以得到tab1的单分区查询时长为400000/(400000+100000)*50/1=40m,tab2的单分区查询时长为100000/(400000+100000)*50/1=10m,单次关联时长为50*0.5/1=25m,万条数据查询时长为50*0.5*10000/(400000+100000)=0.5m。
进而针对目标SQL则可以得到tab1的预估执行时长为40*2=80m,tab2的预估执行时长为10*2=20m,时长预估系数为2/3,目标SQL的关联产生时长为25*2=50m,数据量产生时长为(400000+100000+100000)/10000*0.5=25m,进而则可以得到目标SQL的预估执行时长为(80+20)*2/3+(50+25)*(1-2/3)=91.67m。
步骤250,根据所述优化匹配参数,以及所述第二原子指标数据,生成所述目标SQL的优化建议并显示。
而在得到优化匹配参数之后,则可以根据根据所述优化匹配参数,以及所述第二原子指标数据,生成所述目标SQL的优化建议并显示。
需要说明的是,本步骤可以与前述的步骤240同时执行,也可以在步骤240之前执行,或者是可以仅执行步骤240或者是步骤250,具体的可以根据需求进行预先设置,对此本发明实施例不加以限定。
其中,优化匹配参数,以及所述第二原子指标数据,与优化建议之间的对应关系可以根据需求或者是经验等进行预先设置,对此本发明实施例不加以限定。
可选地,在本发明实施例中,所述步骤250进一步可以包括:
子步骤251,根据所述第二原子指标数据,获取所述目标SQL的引用字段占比以及查询分区;
子步骤252,根据所述引用字段占比以及查询分区,以及所述SQL优化参数,生成所述目标SQL的SQL优化建议;
子步骤253,根据所述模型优化参数,生成所述目标SQL的模型优化建议。
如前述,在本发明实施例中,优化匹配参数可以包括SQL优化参数和模型优化参数。那么此时则可以根据所述第二原子指标数据,获取所述目标SQL的引用字段占比以及查询分区,进而根据所述引用字段占比以及查询分区,以及所述SQL优化参数,生成所述目标SQL的SQL优化建议。
如前述,SQL优化参数可以包括历史引用字段占比阈值,和/或历史查询分区阈值,那么此时如果目标SQL的引用字段占比满足历史引用字段占比阈值,则可以针对目标SQL生成“精细化字段查询”相关的SQL优化建议,而如果目标SQL的查询分区满足历史查询分区阈值,则可以针对目标SQL生成“减少查询分区量”相关的SQL优化建议。具体的SQL优化建议内容可以根据需求进行预先设置,对此本发明实施例不加以限定。
而根据所述模型优化参数,生成所述目标SQL的模型优化建议。
例如,如果模型优化参数包括前述的需要进行数据扩充的目标数据表、待扩充的目标字段、获取目标字段的源数据表,等等,而且此时的源数据表为数据表tab2,目标数据表为数据表tab1,目标字段为字段C1。那么针对目标SQL则可以生成“在tab1中扩展tab2表中的C1字段”的模型优化建议。
根据本发明的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执行前提示所述预估执行时长;和/或,根据所述优化匹配参数,以及所述第二原子指标数据,生成所述目标SQL的优化建议并显示。并且,根据所述第一原子指标数据和所述第二原子指标数据,获取所述目标SQL中被所述已执行SQL覆盖的数据表的第一数量,以及所述目标SQL中包含的数据表的第二数量;根据所述第一数量和所述第二数量,获取所述目标SQL的时长预估系数;根据所述单分区查询时长、所述单次关联时长以及所述时长预估系数,获取所述目标SQL的预估执行时长,并在所述目标SQL执行前提示所述预估执行时长。以及,根据所述第二原子指标数据,获取所述目标SQL的引用字段占比以及查询分区;根据所述引用字段占比以及查询分区,以及所述SQL优化参数,生成所述目标SQL的SQL优化建议;根据所述模型优化参数,生成所述目标SQL的模型优化建议。同样可以进一步提高SQL优化效果。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
实施例三
详细介绍本发明实施例提供的一种SQL优化装置。
参照图3,示出了本发明实施例中一种SQL优化装置的结构示意图。
原子指标数据获取模块310,用于获取已执行SQL的执行时长和第一原子指标数据,以及待执行的目标SQL的第二原子指标数据。
优化规则参数获取模块320,用于基于所述已执行SQL的执行时长和所述第一原子指标数据,获取所述目标SQL的优化规则参数。
优化策略生成模块330,用于根据所述优化规则参数以及所述第二原子指标数据,生成所述目标SQL的优化策略。
根据本发明的SQL优化方法,可以获取已执行SQL的执行时长和第一原子指标数据,以及待执行的目标SQL的第二原子指标数据;基于所述已执行SQL的执行时长和所述第一原子指标数据,获取所述目标SQL的优化规则参数;根据所述优化规则参数以及所述第二原子指标数据,生成所述目标SQL的优化策略。由此取得了在有效避免资源浪费的同时提高优化效果的有益效果。
实施例四
详细介绍本发明实施例提供的一种SQL优化装置。
参照图4,示出了本发明实施例中一种SQL优化装置的结构示意图。
原子指标数据获取模块410,用于获取已执行SQL的执行时长和第一原子指标数据,以及待执行的目标SQL的第二原子指标数据。
优化规则参数获取模块420,用于基于所述已执行SQL的执行时长和所述第一原子指标数据,获取所述目标SQL的优化规则参数;
其中,在本发明实施例中,所述优化规则参数获取模块420,包括:
时长预估参数获取子模块421,用于根据所述第一原子指标数据以及所述已执行SQL的执行时长,获取所述目标SQL的时长预估参数;
可选地,在本发明实施例中,所述时长预估参数获取子模块421,包括:
单分区查询时长获取单元,用于根据所述第一原子指标数据中包含的每个数据表的数据量和总查询分区数,以及所述已执行SQL的执行时长,获取每个所述数据表的单分区查询时长;
复杂度时长获取单元,用于根据所述已执行SQL的执行时长,以及所述第一原子指标数据中的总关联次数和总数据量,获取所述已执行SQL的复杂度时长。
可选地,在本发明实施例中,所述复杂度时长获取单元,进一步可以包括:
单次关联时长获取子单元,用于根据所述已执行SQL的执行时长、所述第一原子指标数据中的总关联次数,以及预设的关联权重,获取所述已执行SQL的单次关联时长;
万条数据查询时长获取子单元,用于根据所述已执行SQL的执行时长、所述第一原子指标数据中的总数据量,以及预设的查询权重,获取所述已执行SQL的万条数据查询时长;
复杂度时长获取子单元,用于根据所述单次关联时长和所述万条数据查询时长,获取所述已执行SQL的复杂度时长。
和/或,优化匹配参数获取子模块422,用于根据所述第一原子指标数据,确定所述目标SQL的优化匹配参数。
可选地,在本发明实施例中,所述优化匹配参数获取子模块422,进一步可以包括:
第一基础数据获取单元,用于根据所述第一原子指标数据,获取所述已执行SQL的的历史引用字段占比、历史查询分区,以及数据表的关联次数和被引用字段的引用次数;
SQL优化参数获取单元,用于根据所述已执行SQL的历史引用字段占比以及历史查询分区,获取所述目标SQL的SQL优化参数,所述SQL优化参数包括历史引用字段占比阈值,和/或历史查询分区阈值;
模型优化参数获取单元,用于根据所述数据表的关联次数和被引用字段的引用次数,以及预设的优化比例,获取所述目标SQL的模型优化参数。
优化策略生成模块430,用于根据所述优化规则参数以及所述第二原子指标数据,生成所述目标SQL的优化策略。
可选地,在本发明实施例中,所述优化策略生成模块430,进一步可以包括:
预估执行时长获取子模块431,用于根据所述时长预估参数,以及所述第二原子指标数据,获取所述目标SQL的预估执行时长,并在所述目标SQL执行前提示所述预估执行时长;
可选地,在本发明实施例中,所述预估执行时长获取子模块431,进一步可以包括:
第二基础数据获取单元,用于根据所述第一原子指标数据和所述第二原子指标数据,获取所述目标SQL中被所述已执行SQL覆盖的数据表的第一数量,以及所述目标SQL中包含的数据表的第二数量;
时长预估系数获取单元,用于根据所述第一数量和所述第二数量,获取所述目标SQL的时长预估系数;
预估执行时长获取单元,用于根据所述单分区查询时长、所述单次关联时长以及所述时长预估系数,获取所述目标SQL的预估执行时长,并在所述目标SQL执行前提示所述预估执行时长。
和/或,优化建议生成子模块432,用于根据所述优化匹配参数,以及所述第二原子指标数据,生成所述目标SQL的优化建议并显示。
可选地,在本发明实施例中,所述优化建议生成子模块432,进一步可以包括:
第三基础数据获取单元,用于根据所述第二原子指标数据,获取所述目标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的复杂度时长。并且,根据所述第一原子指标数据,获取所述已执行SQL的的历史引用字段占比、历史查询分区,以及数据表的关联次数和被引用字段的引用次数;根据所述已执行SQL的历史引用字段占比以及历史查询分区,获取所述目标SQL的SQL优化参数,所述SQL优化参数包括历史引用字段占比阈值,和/或历史查询分区阈值;根据所述数据表的关联次数和被引用字段的引用次数,以及预设的优化比例,获取所述目标SQL的模型优化参数。从而可以进一步提高优化效果。
另外,在本发明实施例中,还可以根据所述时长预估参数,以及所述第二原子指标数据,获取所述目标SQL的预估执行时长,并在所述目标SQL执行前提示所述预估执行时长;和/或,根据所述优化匹配参数,以及所述第二原子指标数据,生成所述目标SQL的优化建议并显示。并且,根据所述第一原子指标数据和所述第二原子指标数据,获取所述目标SQL中被所述已执行SQL覆盖的数据表的第一数量,以及所述目标SQL中包含的数据表的第二数量;根据所述第一数量和所述第二数量,获取所述目标SQL的时长预估系数;根据所述单分区查询时长、所述单次关联时长以及所述时长预估系数,获取所述目标SQL的预估执行时长,并在所述目标SQL执行前提示所述预估执行时长。以及,根据所述第二原子指标数据,获取所述目标SQL的引用字段占比以及查询分区;根据所述引用字段占比以及查询分区,以及所述SQL优化参数,生成所述目标SQL的SQL优化建议;根据所述模型优化参数,生成所述目标SQL的模型优化建议。同样可以进一步提高SQL优化效果。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的SQL优化设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (11)

1.一种SQL优化方法,其特征在于,包括:
获取已执行SQL的执行时长和第一原子指标数据,以及待执行的目标SQL的第二原子指标数据;
基于所述已执行SQL的执行时长和所述第一原子指标数据,获取所述目标SQL的优化规则参数;
根据所述优化规则参数以及所述第二原子指标数据,生成所述目标SQL的优化策略。
2.根据权利要求1所述的方法,其特征在于,所述基于所述已执行SQL的执行时长和所述第一原子指标数据,获取所述目标SQL的优化规则参数的步骤,包括:
根据所述第一原子指标数据以及所述已执行SQL的执行时长,获取所述目标SQL的时长预估参数;
和/或,根据所述第一原子指标数据,确定所述目标SQL的优化匹配参数。
3.根据权利要求2所述的方法其特征在于,所述根据所述第一原子指标数据以及所述已执行SQL的执行时长,获取所述目标SQL的时长预估参数的步骤,包括:
根据所述第一原子指标数据中包含的每个数据表的数据量和总查询分区数,以及所述已执行SQL的执行时长,获取每个所述数据表的单分区查询时长;
根据所述已执行SQL的执行时长,以及所述第一原子指标数据中的总关联次数和总数据量,获取所述已执行SQL的复杂度时长。
4.根据权利要求3所述的方法,其特征在于,所述根据所述已执行SQL的执行时长,以及所述第一原子指标数据中的总关联次数和总数据量,获取所述已执行SQL的复杂度时长的步骤,包括:
根据所述已执行SQL的执行时长、所述第一原子指标数据中的总关联次数,以及预设的关联权重,获取所述已执行SQL的单次关联时长;
根据所述已执行SQL的执行时长、所述第一原子指标数据中的总数据量,以及预设的查询权重,获取所述已执行SQL的万条数据查询时长;
根据所述单次关联时长和所述万条数据查询时长,获取所述已执行SQL的复杂度时长。
5.根据权利要求2所述的方法,其特征在于,所述根据所述第一原子指标数据,确定所述目标SQL的优化匹配参数的步骤,包括:
根据所述第一原子指标数据,获取所述已执行SQL的的历史引用字段占比、历史查询分区,以及数据表的关联次数和被引用字段的引用次数;
根据所述已执行SQL的历史引用字段占比以及历史查询分区,获取所述目标SQL的SQL优化参数,所述SQL优化参数包括历史引用字段占比阈值,和/或历史查询分区阈值;
根据所述数据表的关联次数和被引用字段的引用次数,以及预设的优化比例,获取所述目标SQL的模型优化参数。
6.根据权利要求2所述的方法,其特征在于,所述根据所述优化规则参数以及所述第二原子指标数据,生成所述目标SQL的优化策略的步骤,包括:
根据所述时长预估参数,以及所述第二原子指标数据,获取所述目标SQL的预估执行时长,并在所述目标SQL执行前提示所述预估执行时长;
和/或,根据所述优化匹配参数,以及所述第二原子指标数据,生成所述目标SQL的优化建议并显示。
7.根据权利要求3所述的方法,其特征在于,所述根据所述时长预估参数,以及所述第二原子指标数据,获取所述目标SQL的预估执行时长,并在所述目标SQL执行前提示所述预估执行时长的步骤,包括:
根据所述第一原子指标数据和所述第二原子指标数据,获取所述目标SQL中被所述已执行SQL覆盖的数据表的第一数量,以及所述目标SQL中包含的数据表的第二数量;
根据所述第一数量和所述第二数量,获取所述目标SQL的时长预估系数;
根据所述单分区查询时长、所述单次关联时长以及所述时长预估系数,获取所述目标SQL的预估执行时长,并在所述目标SQL执行前提示所述预估执行时长。
8.根据权利要求4所述的方法,其特征在于,所述根据所述优化匹配参数,以及所述第二原子指标数据,生成所述目标SQL的优化建议并显示的步骤,包括:
根据所述第二原子指标数据,获取所述目标SQL的引用字段占比以及查询分区;
根据所述引用字段占比以及查询分区,以及所述SQL优化参数,生成所述目标SQL的SQL优化建议;
根据所述模型优化参数,生成所述目标SQL的模型优化建议。
9.一种SQL优化装置,其特征在于,包括:
原子指标数据获取模块,用于获取已执行SQL的执行时长和第一原子指标数据,以及待执行的目标SQL的第二原子指标数据;
优化规则参数获取模块,用于基于所述已执行SQL的执行时长和所述第一原子指标数据,获取所述目标SQL的优化规则参数;
优化策略生成模块,用于根据所述优化规则参数以及所述第二原子指标数据,生成所述目标SQL的优化策略。
10.一种电子设备,其特征在于,包括:
处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-8中的任一项所述的SQL优化方法。
11.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如权利要求1-8中的任一项所述的SQL优化方法。
CN201910266901.8A 2019-04-03 2019-04-03 Sql优化方法、装置、电子设备及可读存储介质 Active CN110119403B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910266901.8A CN110119403B (zh) 2019-04-03 2019-04-03 Sql优化方法、装置、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910266901.8A CN110119403B (zh) 2019-04-03 2019-04-03 Sql优化方法、装置、电子设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN110119403A true CN110119403A (zh) 2019-08-13
CN110119403B CN110119403B (zh) 2020-08-18

Family

ID=67520772

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910266901.8A Active CN110119403B (zh) 2019-04-03 2019-04-03 Sql优化方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN110119403B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112818003A (zh) * 2021-01-14 2021-05-18 内蒙古蒙商消费金融股份有限公司 一种查询任务的执行风险预估方法及装置

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103399851A (zh) * 2013-06-25 2013-11-20 携程计算机技术(上海)有限公司 一种结构化查询语言(sql)脚本的性能分析与预测方法与***
CN104820663A (zh) * 2014-01-30 2015-08-05 西门子公司 发现低性能的sql语句以及预测sql语句性能的方法和装置
CN105183614A (zh) * 2015-11-03 2015-12-23 华夏银行股份有限公司 一种数据库故障预测方法及装置
CN105243068A (zh) * 2014-07-09 2016-01-13 华为技术有限公司 数据库***的查询方法、服务器和能耗测试***
US20160147888A1 (en) * 2014-11-21 2016-05-26 Red Hat, Inc. Federation optimization using ordered queues
US9477707B2 (en) * 2013-01-29 2016-10-25 Nec Corporation System and methods for predicting query execution time for concurrent and dynamic database workloads
CN106611044A (zh) * 2016-12-02 2017-05-03 星环信息科技(上海)有限公司 一种sql优化方法及设备
US20170228429A1 (en) * 2016-02-05 2017-08-10 International Business Machines Corporation Dynamic combination of processes for sub-queries
US20180196850A1 (en) * 2017-01-11 2018-07-12 Facebook, Inc. Systems and methods for optimizing queries
US20190034485A1 (en) * 2017-05-30 2019-01-31 Ocient Inc. System and method for optimizing large database management systems with multiple optimizers
CN109324905A (zh) * 2018-09-30 2019-02-12 拉卡拉支付股份有限公司 数据库操作方法、装置、电子设备及存储介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9477707B2 (en) * 2013-01-29 2016-10-25 Nec Corporation System and methods for predicting query execution time for concurrent and dynamic database workloads
CN103399851A (zh) * 2013-06-25 2013-11-20 携程计算机技术(上海)有限公司 一种结构化查询语言(sql)脚本的性能分析与预测方法与***
CN104820663A (zh) * 2014-01-30 2015-08-05 西门子公司 发现低性能的sql语句以及预测sql语句性能的方法和装置
CN105243068A (zh) * 2014-07-09 2016-01-13 华为技术有限公司 数据库***的查询方法、服务器和能耗测试***
US20160147888A1 (en) * 2014-11-21 2016-05-26 Red Hat, Inc. Federation optimization using ordered queues
CN105183614A (zh) * 2015-11-03 2015-12-23 华夏银行股份有限公司 一种数据库故障预测方法及装置
US20170228429A1 (en) * 2016-02-05 2017-08-10 International Business Machines Corporation Dynamic combination of processes for sub-queries
CN106611044A (zh) * 2016-12-02 2017-05-03 星环信息科技(上海)有限公司 一种sql优化方法及设备
US20180196850A1 (en) * 2017-01-11 2018-07-12 Facebook, Inc. Systems and methods for optimizing queries
US20190034485A1 (en) * 2017-05-30 2019-01-31 Ocient Inc. System and method for optimizing large database management systems with multiple optimizers
CN109324905A (zh) * 2018-09-30 2019-02-12 拉卡拉支付股份有限公司 数据库操作方法、装置、电子设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
FAZAL MITHANI ET AL: "A Novel Approach for SQL Query Optimization", 《2016 IEEE INTERNATIONAL CONFERENCE ON COMPUTATIONAL INTELLIGENCE AND COMPUTING RESEARCH (ICCIC)》 *
*** 等: "SQL语句执行原理及性能优化", 《现代商贸工业》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112818003A (zh) * 2021-01-14 2021-05-18 内蒙古蒙商消费金融股份有限公司 一种查询任务的执行风险预估方法及装置
CN112818003B (zh) * 2021-01-14 2023-03-31 内蒙古蒙商消费金融股份有限公司 一种查询任务的执行风险预估方法及装置

Also Published As

Publication number Publication date
CN110119403B (zh) 2020-08-18

Similar Documents

Publication Publication Date Title
Anand et al. A comparative analysis of optimization solvers
US8639481B2 (en) Automated interactive multi-objective optimization-based system design tool
Gebser et al. Advanced Conflict-Driven Disjunctive Answer Set Solving.
Cariou et al. OCL contracts for the verification of model transformations
Dragomir et al. Model checking kernel P systems
Dai et al. An improved full-discretization method for chatter stability prediction
Zhou et al. A declarative optimization engine for resource provisioning of scientific workflows in IaaS clouds
CN110119403A (zh) Sql优化方法、装置、电子设备及可读存储介质
Salado et al. A research on measuring and reducing problem complexity to increase system affordability: From theory to practice
Courbin et al. Fortas: Framework for real-time analysis and simulation
CN109212999B (zh) 数字卫星仿真工况的智能生成方法及***
CN106557416B (zh) 软件云测试的实现方法和装置
US20130346436A1 (en) Simulation Techniques for Predicting In-Memory Database Systems Performance
Van Den Berg et al. Computing response time distributions using iterative probabilistic model checking
CN110298581A (zh) 确定风险指标值的方法及装置
CN107784032B (zh) 一种数据查询结果的渐进式输出方法、装置及***
Sen et al. Evaluating Reconfiguration Impact in Self-Adaptive Systems--An Approach Based on Combinatorial Interaction Testing
Anuradha et al. Efficient workload characterization technique for heterogeneous processors
CN104050083A (zh) 一种面向条件判定覆盖的测试数据自动生成方法
Haring et al. Workload modeling for parallel processing systems
Shafiee et al. Development of a design-time estimation model for complex engineering processes
CN109840259A (zh) 数据查询方法、装置、电子设备及可读存储介质
Hu et al. Hardware-software partitioning for real-time embedded systems
EP3633468B1 (en) Distributed automated synthesis of correct-by-construction controllers
CN112418930B (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
GR01 Patent grant
GR01 Patent grant