CN107688589A - 数据库***优化的方法及装置 - Google Patents

数据库***优化的方法及装置 Download PDF

Info

Publication number
CN107688589A
CN107688589A CN201710088152.5A CN201710088152A CN107688589A CN 107688589 A CN107688589 A CN 107688589A CN 201710088152 A CN201710088152 A CN 201710088152A CN 107688589 A CN107688589 A CN 107688589A
Authority
CN
China
Prior art keywords
sql statement
caching
data
default
total amount
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
CN201710088152.5A
Other languages
English (en)
Other versions
CN107688589B (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.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen 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
Priority to CN201710088152.5A priority Critical patent/CN107688589B/zh
Application filed by Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to PCT/CN2017/091375 priority patent/WO2018149085A1/zh
Priority to US16/084,228 priority patent/US11132362B2/en
Priority to JP2018532071A priority patent/JP6570156B2/ja
Priority to AU2017399399A priority patent/AU2017399399B2/en
Priority to SG11201808828RA priority patent/SG11201808828RA/en
Priority to EP17882274.8A priority patent/EP3388957B1/en
Priority to KR1020187017569A priority patent/KR102141083B1/ko
Publication of CN107688589A publication Critical patent/CN107688589A/zh
Application granted granted Critical
Publication of CN107688589B publication Critical patent/CN107688589B/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/245Query processing
    • G06F16/2453Query optimisation
    • 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/3409Recording 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 for performance assessment
    • 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
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • 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
    • G06F16/24564Applying rules; Deductive queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

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

Abstract

本发明涉及一种数据库***优化的方法及装置,所述数据库***优化的方法包括:每隔预设的第一时间对数据库***的各SQL语句的性能数据进行快照,将所述快照按时间顺序排列并保存,所述性能数据包括执行次数和缓存读数据量;将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算,以计算出预设的第一时间内各SQL语句对应的缓存读数据总量及单次执行缓存读数据平均量;获取每一SQL语句的缓存读数据总量及单次执行缓存读数据平均量的数值之和,基于所述数值之和选出待优化的SQL语句。本发明能够准确定位需要优化的SQL语句,提高优化效率。

Description

数据库***优化的方法及装置
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据库***优化的方法及装置。
背景技术
数据库的查询SQL(Structured Query Language,结构化查询语言)语句具有各种不同的写法,不同的写法的SQL语句与应用***的性能优劣有关。在应用***开发初期,数据库中的数据比较少,不同写法的SQL语句对应用***的影响不大。在实际应用中,数据库中的数据会不断增加,应用***的响应速度会受到很大的影响,因此,需要对SQL语句进行优化,以便优化应用***。
目前,DBA(Database Administrator,数据库管理员)在面对大量的SQL语句时,通常是人工选择SQL语句进行优化。如果所选择的SQL语句不经常被使用,则即便进行优化后也无法提高应用***的响应速度,因此,人工选择的方式无法准确定位需要优化的SQL语句,优化效率低下。
发明内容
本发明的目的在于提供一种数据库***优化的方法及装置,旨在准确定位需要优化的SQL语句,提高优化效率。
为实现上述目的,本发明提供一种数据库***优化的方法,所述数据库***优化的方法包括:
S1,每隔预设的第一时间对数据库***的各SQL语句的性能数据进行快照,将所述快照按时间顺序排列并保存,所述性能数据包括执行次数和缓存读数据量;
S2,将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算,以计算出预设的第一时间内各SQL语句对应的缓存读数据总量及单次执行缓存读数据平均量;
S3,获取每一SQL语句的缓存读数据总量及单次执行缓存读数据平均量的数值之和,基于所述数值之和选出待优化的SQL语句。
优选地,所述步骤S2替换为:
将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算,以计算出预设的第一时间内各SQL语句对应的缓存读数据总量、所有SQL语句的缓存读数据总量之和及各SQL语句对应的单次执行缓存读数据平均量;
获取各SQL语句对应的缓存读数据总量与所有SQL语句的缓存读数据总量之和的比值;
将所述比值大于所述预设比值对应的SQL语句作为执行所述步骤S3的SQL语句。
优选地,所述步骤S2之后包括:
S201,分析是否有SQL语句对应的单次执行缓存读数据平均量小于等于预设的数据量;
S202,若是,将单次执行缓存读数据平均量小于等于预设的数据量的SQL语句进行过滤,并将单次执行缓存读数据平均量大于预设的数据量的SQL语句作为执行所述步骤S3的SQL语句。
优选地,所述步骤S3包括:
S31,将各SQL语句按照对应的缓存读数据总量大小进行第一次排序,并将各SQL语句按照对应的单次执行缓存读数据平均量大小进行第二次排序,获取各SQL语句以所述第一次排序及第二次排序为基准的综合排序;
S32,基于所述综合排序并利用预设的计算规则计算出各SQL语句对应的目标值,根据所述目标值选出待优化的SQL语句。
优选地,所述步骤S32包括:
计算各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语句,提高优化效率。
附图说明
图1为本发明数据库***优化的方法第一实施例的流程示意图;
图2为本发明数据库***优化的方法第二实施例的流程示意图;
图3为图1所示步骤S3的细化流程示意图;
图4为本发明数据库***优化的装置第一实施例的结构示意图;
图5为本发明数据库***优化的装置第二实施例的结构示意图;
图6为图4所示选择模块的结构示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,图1为本发明数据库***优化的方法一实施例的流程示意图,该数据库***优化的方法包括以下步骤:
步骤S1,每隔预设的第一时间对数据库***的各SQL语句的性能数据进行快照,将所述快照按时间顺序排列并保存;
本实施例中,可以利用一SQL语句优化***来对数据库***进行优化。每隔预设的第一时间对数据库***的各SQL语句的性能数据进行快照(即snapshot),例如每隔1小时对各SQL语句的性能数据进行快照,以得到数据库在对应时间的静态视图,快照得到的是整个数据库的数据。
其中,SQL语句的性能数据包括执行次数(即executions)和缓存读(即buffergets)数据量,缓存读数据量为SQL语句从内存中读取的数据量。
步骤S2,将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算,以计算出预设的第一时间内各SQL语句对应的缓存读数据总量及单次执行缓存读数据平均量;
本实施例中,将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算。即将当前快照的各个SQL语句对应的缓存读数据总量与上一顺序的快照的各个SQL语句对应的缓存读数据总量进行差异计算(例如进行统计并相减运算),以计算出预设的第一时间内各SQL语句对应的缓存读数据总量;将当前快照的各个SQL语句对应的单次执行缓存读数据平均量与上一顺序的快照的各个SQL语句对应的单次执行缓存读数据平均量进行差异计算(例如进行统计并相减运算),以计算出预设的第一时间内各SQL语句对应的单次执行缓存读数据平均量。例如,当前快照的快照时间为8:00,时间间隔为1小时,则上一顺序的快照为时间为7:00的快照,在进行差异计算后,得到时间为7:00—8:00之间的各SQL语句对应的缓存读数据总量及各SQL语句对应的单次执行缓存读数据平均量。
其中,一个SQL语句对应的单次执行缓存读数据平均量等于该SQL语句对应的缓存读数据总量与该SQL语句对应的执行次数之商。
步骤S3,获取每一SQL语句的缓存读数据总量及单次执行缓存读数据平均量的数值之和,基于所述数值之和选出待优化的SQL语句。
本实施例中,获取每一SQL语句的缓存读数据总量及单次执行缓存读数据平均量的数值之和,即对于每一SQL语句,仅仅将缓存读数据总量的数值与单次执行缓存读数据平均量的数值进行相加,以得到数值之和。
例如,两个SQL语句缓存读数据总量相同,均为10万,第一个SQL语句的执行次数为2万,第二个SQL语句的执行次数为5万,则第一个SQL语句的单次执行缓存读数据平均量为5,第二个SQL语句的单次执行缓存读数据平均量为2,那么优先选择总和为(10万+5)的第二个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的实施例的基础上,所述步骤S2替换为:
将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算,以计算出预设的第一时间内各SQL语句对应的缓存读数据总量、所有SQL语句的缓存读数据总量之和及各SQL语句对应的单次执行缓存读数据平均量;
获取各SQL语句对应的缓存读数据总量与所有SQL语句的缓存读数据总量之和的比值;
将所述比值大于所述预设比值对应的SQL语句作为执行所述步骤S3的SQL语句。
本实施例中,将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算。即将当前快照的各个SQL语句对应的缓存读数据总量与上一顺序的快照的各个SQL语句对应的缓存读数据总量进行差异计算(例如进行统计并相减运算),以计算出预设的第一时间内各SQL语句对应的缓存读数据总量;
将当前快照的所有SQL语句的缓存读数据总量之和与上一顺序的快照的所有SQL语句的缓存读数据总量之和进行差异计算(例如进行统计并相减运算),以计算出预设的第一时间内所有SQL语句的缓存读数据总量之和;
将当前快照的各个SQL语句对应的单次执行缓存读数据平均量与上一顺序的快照的各个SQL语句对应的单次执行缓存读数据平均量进行差异计算(例如进行统计并相减运算),以计算出预设的第一时间内各SQL语句对应的单次执行缓存读数据平均量。
然后,获取各SQL语句对应的缓存读数据总量与所有SQL语句的缓存读数据总量之和的比值,如果该比值小,则说明该SQL语句为不被经常使用的SQL语句,将比值小于等于预设比值对应的SQL语句进行过滤,例如,将比值小于等于1%的SQL语句进行过滤,并将比值大于预设比值对应的SQL语句作为执行步骤S3的SQL语句。
在一优选的实施例中,如图2所示,在上述图1的实施例的基础上,上述步骤S2之后包括:
S201,分析是否有SQL语句对应的单次执行缓存读数据平均量小于等于预设的数据量;
S202,若是,将单次执行缓存读数据平均量小于等于预设的数据量的SQL语句进行过滤,并将单次执行缓存读数据平均量大于预设的数据量的SQL语句作为执行所述步骤S3的SQL语句。
本实施例中,在计算出各SQL语句对应的缓存读数据总量及单次执行缓存读数据平均量后,分析是否有SQL语句对应的单次执行缓存读数据平均量小于等于预设的数据量,由于SQL语句的单次执行缓存读数据平均量表征该SQL语句的性能的高低程度,因此,可以将单次执行缓存读数据平均量小于等于预设的数据量的SQL语句进行过滤,例如,将单次执行缓存读数据平均量小于等于100的SQL语句进行过滤,并将单次执行缓存读数据平均量大于预设的数据量的SQL语句作为执行所述步骤S3的SQL语句。
在一优选的实施例中,如图3所示,在上述图1的实施例的基础上,所述步骤S3包括:
S31,将各SQL语句按照对应的缓存读数据总量大小进行第一次排序,并将各SQL语句按照对应的单次执行缓存读数据平均量大小进行第二次排序,获取各SQL语句以所述第一次排序及第二次排序为基准的综合排序;
S32,基于所述综合排序并利用预设的计算规则计算出各SQL语句对应的目标值,根据所述目标值选出待优化的SQL语句。
本实施例中,将各SQL语句按照对应的缓存读数据总量大小进行第一次排序,即按照缓存读数据总量由大至小的顺序进行排序,例如,SQL语句A、B、C、D及E按照对应的缓存读数据总量大小进行排序得到B、C、D、A、E,然后,可以生成对应的序号,例如SQL语句B、C、D、A、E对应的序号可以是1、2、3、4及5。
将各SQL语句按照对应的单次执行缓存读数据平均量大小进行第二次排序,即按照单次执行缓存读数据平均量由大至小的顺序进行排序,例如,SQL语句A、B、C、D及E按照对应的单次缓存读数据平均量大小进行排序得到D、A、E、B、C,然后,可以生成对应的序号,例如SQL语句D、A、E、B、C对应的序号可以是1、2、3、4及5。
在获取综合序号时以第一次排序及第二次排序为基准,例如可以将第一次排序的序号及第二次排序的序号相加得到A(4+2)、B(4+1)、C(2+5)、D(3+1)及E(5+3),即综合排序为E、C、A、B、D,最终生成SQL语句E、C、A、B、D的综合序号,例如SQL语句E、C、A、B、D对应的序号为1、2、3、4及5。
当然,本实施例也可以采用其他的以第一次排序及第二次排序为基准所得的综合排序,此处不再赘述。
可以看出,经过综合排序后的SQL语句,其综合SQL语句缓存读数据总量及单次执行缓存读数据平均量两者,按照量由大至小来进行排序的,因此,可以认为,综合排序后的SQL语句为按照其使用的频繁程度及性能由高至低进行排序的。
本实施例中,基于综合排序并利用预设的计算规则计算出各SQL语句对应的目标值,根据目标值选出待优化的SQL语句。
优选地,可以计算各SQL语句的综合排序对应的综合序号与所有SQL语句的数量之商,以得到各SQL语句对应的目标值;分析预设的第二时间内(例如10小时内)是否有至少一个SQL语句的目标值,其中,预设的第二时间大于所述预设的第一时间;若是,则将所述预设的第二时间内相同的SQL语句对应的目标值进行累加,以得到相同的SQL语句的目标值总和。例如,若在预设的第二时间内,一个SQL语句对应有多个目标值,则将该SQL语句对应的所有目标值累加,以得到该SQL语句对应的目标值总和;若在预设的第二时间内,一个SQL语句只对应一个目标值,则将该目标值作为该SQL语句对应的目标值总和。将所述目标值总和大于等于预设数值的SQL语句作为待优化的SQL语句。
如图4所示,图4为本发明数据库***优化的装置一实施例的结构示意图,该数据库***优化的装置包括:
快照模块101,用于每隔预设的第一时间对数据库***的各SQL语句的性能数据进行快照,将所述快照按时间顺序排列并保存,所述性能数据包括执行次数和缓存读数据量;
本实施例中,可以利用一SQL语句优化***来对数据库***进行优化,SQL语句优化***置于该数据库***优化的装置中。每隔预设的第一时间对数据库***的各SQL语句的性能数据进行快照(即snapshot),例如每隔1小时对各SQL语句的性能数据进行快照,以得到数据库在对应时间的静态视图,快照得到的是整个数据库的数据。
其中,SQL语句的性能数据包括执行次数(即executions)和缓存读(即buffergets)数据量,缓存读数据量为SQL语句从内存中读取的数据量。
计算模块102,用于将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算,以计算出预设的第一时间内各SQL语句对应的缓存读数据总量及单次执行缓存读数据平均量;
本实施例中,将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算。即将当前快照的各个SQL语句对应的缓存读数据总量与上一顺序的快照的各个SQL语句对应的缓存读数据总量进行差异计算(例如进行统计并相减运算),以计算出预设的第一时间内各SQL语句对应的缓存读数据总量;将当前快照的各个SQL语句对应的单次执行缓存读数据平均量与上一顺序的快照的各个SQL语句对应的单次执行缓存读数据平均量进行差异计算(例如进行统计并相减运算),以计算出预设的第一时间内各SQL语句对应的单次执行缓存读数据平均量。例如,当前快照的快照时间为8:00,时间间隔为1小时,则上一顺序的快照为时间为7:00的快照,在进行差异计算后,得到时间为7:00—8:00之间的各SQL语句对应的缓存读数据总量及各SQL语句对应的单次执行缓存读数据平均量。
其中,一个SQL语句对应的单次执行缓存读数据平均量等于该SQL语句对应的缓存读数据总量与该SQL语句对应的执行次数之商。
选择模块103,用于获取每一SQL语句的缓存读数据总量及单次执行缓存读数据平均量的数值之和,基于所述数值之和选出待优化的SQL语句。
本实施例中,获取每一SQL语句的缓存读数据总量及单次执行缓存读数据平均量的数值之和,即对于每一SQL语句,仅仅将缓存读数据总量的数值与单次执行缓存读数据平均量的数值进行相加,以得到数值之和。
例如,两个SQL语句缓存读数据总量相同,均为10万,第一个SQL语句的执行次数为2万,第二个SQL语句的执行次数为5万,则第一个SQL语句的单次执行缓存读数据平均量为5,第二个SQL语句的单次执行缓存读数据平均量为2,那么优先选择总和为(10万+5)的第二个SQL语句作为待优化的SQL语句;又如,在两个SQL语句的执行次数相同的情况下,选择缓存读数据总量大的SQL语句作为待优化的SQL语句;再如,两个SQL语句缓存读数据总量不相同,执行次数也不相同的情况下,选择缓存读数据总量的数值与单次执行缓存读数据平均量的数值之和较大的SQL语句作为待优化的SQL语句。
其中,单次执行缓存读数据平均量表征一个SQL语句一次执行缓存读数据的平均量,如果该平均量越大,则一个SQL语句一次执行缓存读数据越多,在相同的缓存读数据总量下,一个SQL语句单次执行缓存读数据平均量越大,则该SQL语句为性能较高的SQL语句,优先作为待优化的SQL语句。通过该数值之和可以看出,本实施例基于缓存读数据总量及单次执行缓存读数据平均量来对SQL语句的使用情况做整体、综合性的评估,如果SQL语句的数值之和越大,则说明该SQL语句被使用的频繁程度及性能越高。
本实施例中,基于数值之和选出待优化的SQL语句,可以按照数值之和的由大至小进行排序,按照该排序的顺序选择待优化的SQL语句,其中,排列在前的SQL语句为待优化的SQL语句。
在一优选的实施例中,如图4所示,在上述图3的实施例的基础上,上述计算模块102替换为处理模块,用于将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算,以计算出预设的第一时间内各SQL语句对应的缓存读数据总量、所有SQL语句的缓存读数据总量之和及各SQL语句对应的单次执行缓存读数据平均量;获取各SQL语句对应的缓存读数据总量与所有SQL语句的缓存读数据总量之和的比值;将所述比值大于所述预设比值对应的SQL语句作为所述选择模块的SQL语句。
本实施例中,将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算。即将当前快照的各个SQL语句对应的缓存读数据总量与上一顺序的快照的各个SQL语句对应的缓存读数据总量进行差异计算(例如进行统计并相减运算),以计算出预设的第一时间内各SQL语句对应的缓存读数据总量;
将当前快照的所有SQL语句的缓存读数据总量之和与上一顺序的快照的所有SQL语句的缓存读数据总量之和进行差异计算(例如进行统计并相减运算),以计算出预设的第一时间内所有SQL语句的缓存读数据总量之和;
将当前快照的各个SQL语句对应的单次执行缓存读数据平均量与上一顺序的快照的各个SQL语句对应的单次执行缓存读数据平均量进行差异计算(例如进行统计并相减运算),以计算出预设的第一时间内各SQL语句对应的单次执行缓存读数据平均量。
然后,获取各SQL语句对应的缓存读数据总量与所有SQL语句的缓存读数据总量之和的比值,如果该比值小,则说明该SQL语句为不被经常使用的SQL语句,将比值小于等于预设比值对应的SQL语句进行过滤,例如,将比值小于等于1%的SQL语句进行过滤,并将比值大于预设比值对应的SQL语句作为所述选择模块103的SQL语句。
在一优选的实施例中,如图5所示,在上述图4的实施例的基础上,上述数据库***优化的装置还包括:
分析模块201,用于分析是否有SQL语句对应的单次执行缓存读数据平均量小于等于预设的数据量;
过滤模块202,用于若是,将单次执行缓存读数据平均量小于等于预设的数据量的SQL语句进行过滤,并将单次执行缓存读数据平均量大于预设的数据量的SQL语句作为所述选择模块的SQL语句。
本实施例中,在计算出各SQL语句对应的缓存读数据总量及单次执行缓存读数据平均量后,分析是否有SQL语句对应的单次执行缓存读数据平均量小于等于预设的数据量,由于SQL语句的单次执行缓存读数据平均量表征该SQL语句的性能的高低程度,因此,可以将单次执行缓存读数据平均量小于等于预设的数据量的SQL语句进行过滤,例如,将单次执行缓存读数据平均量小于等于100的SQL语句进行过滤,并将单次执行缓存读数据平均量大于预设的数据量的SQL语句作为选择模块102的SQL语句。
在一优选的实施例中,如图6所示,在上述图4的实施例的基础上,上述选择模块103包括:
排序单元1031,用于将各SQL语句按照对应的缓存读数据总量大小进行第一次排序,并将各SQL语句按照对应的单次执行缓存读数据平均量大小进行第二次排序,获取各SQL语句以所述第一次排序及第二次排序为基准的综合排序;
选择单元1032,用于基于所述综合排序并利用预设的计算规则计算出各SQL语句对应的目标值,根据所述目标值选出待优化的SQL语句。
本实施例中,将各SQL语句按照对应的缓存读数据总量大小进行第一次排序,即按照缓存读数据总量由大至小的顺序进行排序,例如,SQL语句A、B、C、D及E按照对应的缓存读数据总量大小进行排序得到B、C、D、A、E,然后,可以生成对应的序号,例如SQL语句B、C、D、A、E对应的序号可以是1、2、3、4及5。
将各SQL语句按照对应的单次执行缓存读数据平均量大小进行第二次排序,即按照单次执行缓存读数据平均量由大至小的顺序进行排序,例如,SQL语句A、B、C、D及E按照对应的单次缓存读数据平均量大小进行排序得到D、A、E、B、C,然后,可以生成对应的序号,例如SQL语句D、A、E、B、C对应的序号可以是1、2、3、4及5。
在获取综合序号时以第一次排序及第二次排序为基准,例如可以将第一次排序的序号及第二次排序的序号相加得到A(4+2)、B(4+1)、C(2+5)、D(3+1)及E(5+3),即综合排序为E、C、A、B、D,最终生成SQL语句E、C、A、B、D的综合序号,例如SQL语句E、C、A、B、D对应的序号为1、2、3、4及5。
当然,本实施例也可以采用其他的以第一次排序及第二次排序为基准所得的综合排序,此处不再赘述。
可以看出,经过综合排序后的SQL语句,其综合SQL语句缓存读数据总量及单次执行缓存读数据平均量两者,按照量由大至小来进行排序的,因此,可以认为,综合排序后的SQL语句为按照其使用的频繁程度及性能由高至低进行排序的。
本实施例中,基于综合排序并利用预设的计算规则计算出各SQL语句对应的目标值,根据目标值选出待优化的SQL语句。
优选地,选择单元1032具体用于计算各SQL语句的综合排序对应的综合序号与所有SQL语句的数量之商,以得到各SQL语句对应的目标值;分析预设的第二时间内(例如10小时内)是否有至少一个SQL语句的目标值,其中,预设的第二时间大于所述预设的第一时间;若是,则将所述预设的第二时间内相同的SQL语句对应的目标值进行累加,以得到相同的SQL语句的目标值总和。例如,若在预设的第二时间内,一个SQL语句对应有多个目标值,则将该SQL语句对应的所有目标值累加,以得到该SQL语句对应的目标值总和;若在预设的第二时间内,一个SQL语句只对应一个目标值,则将该目标值作为该SQL语句对应的目标值总和。将所述目标值总和大于等于预设数值的SQL语句作为待优化的SQL语句。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种数据库***优化的方法,其特征在于,所述数据库***优化的方法包括:
S1,每隔预设的第一时间对数据库***的各SQL语句的性能数据进行快照,将所述快照按时间顺序排列并保存,所述性能数据包括执行次数和缓存读数据量;
S2,将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算,以计算出预设的第一时间内各SQL语句对应的缓存读数据总量及单次执行缓存读数据平均量;
S3,获取每一SQL语句的缓存读数据总量及单次执行缓存读数据平均量的数值之和,基于所述数值之和选出待优化的SQL语句。
2.根据权利要求1所述的数据库***优化的方法,其特征在于,所述步骤S2替换为:
将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算,以计算出预设的第一时间内各SQL语句对应的缓存读数据总量、所有SQL语句的缓存读数据总量之和及各SQL语句对应的单次执行缓存读数据平均量;
获取各SQL语句对应的缓存读数据总量与所有SQL语句的缓存读数据总量之和的比值;
将所述比值大于所述预设比值对应的SQL语句作为执行所述步骤S3的SQL语句。
3.根据权利要求1所述的数据库***优化的方法,其特征在于,所述步骤S2之后包括:
S201,分析是否有SQL语句对应的单次执行缓存读数据平均量小于等于预设的数据量;
S202,若是,将单次执行缓存读数据平均量小于等于预设的数据量的SQL语句进行过滤,并将单次执行缓存读数据平均量大于预设的数据量的SQL语句作为执行所述步骤S3的SQL语句。
4.根据权利要求1至3任一项所述的数据库***优化的方法,其特征在于,所述步骤S3包括:
S31,将各SQL语句按照对应的缓存读数据总量大小进行第一次排序,并将各SQL语句按照对应的单次执行缓存读数据平均量大小进行第二次排序,获取各SQL语句以所述第一次排序及第二次排序为基准的综合排序;
S32,基于所述综合排序并利用预设的计算规则计算出各SQL语句对应的目标值,根据所述目标值选出待优化的SQL语句。
5.根据权利要求4所述的数据库***优化的方法,其特征在于,所述步骤S32包括:
计算各SQL语句的综合排序对应的综合序号与所有SQL语句的数量之商,以得到各SQL语句对应的目标值;
分析预设的第二时间内是否有至少一个SQL语句的目标值,所述预设的第二时间大于所述预设的第一时间;
若是,则将所述预设的第二时间内相同的SQL语句对应的目标值进行累加,以得到相同的SQL语句的目标值总和;
将所述目标值总和大于等于预设数值的SQL语句作为待优化的SQL语句。
6.一种数据库***优化的装置,其特征在于,所述数据库***优化的装置包括:
快照模块,用于每隔预设的第一时间对数据库***的各SQL语句的性能数据进行快照,将所述快照按时间顺序排列并保存,所述性能数据包括执行次数和缓存读数据量;
计算模块,用于将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算,以计算出预设的第一时间内各SQL语句对应的缓存读数据总量及单次执行缓存读数据平均量;
选择模块,用于获取每一SQL语句的缓存读数据总量及单次执行缓存读数据平均量的数值之和,基于所述数值之和选出待优化的SQL语句。
7.根据权利要求6所述的数据库***优化的装置,其特征在于,所述计算模块替换为处理模块,用于将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算,以计算出预设的第一时间内各SQL语句对应的缓存读数据总量、所有SQL语句的缓存读数据总量之和及各SQL语句对应的单次执行缓存读数据平均量;获取各SQL语句对应的缓存读数据总量与所有SQL语句的缓存读数据总量之和的比值;将所述比值大于所述预设比值对应的SQL语句作为所述选择模块的SQL语句。
8.根据权利要求6所述的数据库***优化的装置,其特征在于,所述数据库***优化的装置还包括:
分析模块,用于分析是否有SQL语句对应的单次执行缓存读数据平均量小于等于预设的数据量;
过滤模块,用于若是,将单次执行缓存读数据平均量小于等于预设的数据量的SQL语句进行过滤,并将单次执行缓存读数据平均量大于预设的数据量的SQL语句作为所述选择模块的SQL语句。
9.根据权利要求6至8任一项所述的数据库***优化的装置,其特征在于,所述选择模块包括:
排序单元,用于将各SQL语句按照对应的缓存读数据总量大小进行第一次排序,并将各SQL语句按照对应的单次执行缓存读数据平均量大小进行第二次排序,获取各SQL语句以所述第一次排序及第二次排序为基准的综合排序;
选择单元,用于基于所述综合排序并利用预设的计算规则计算出各SQL语句对应的目标值,根据所述目标值选出待优化的SQL语句。
10.根据权利要求9所述的数据库***优化的装置,其特征在于,所述选择单元具体用于计算各SQL语句的综合排序对应的综合序号与所有SQL语句的数量之商,以得到各SQL语句对应的目标值;分析预设的第二时间内是否有至少一个SQL语句的目标值,所述预设的第二时间大于所述预设的第一时间;若是,则将所述预设的第二时间内相同的SQL语句对应的目标值进行累加,以得到相同的SQL语句的目标值总和;将所述目标值总和大于等于预设数值的SQL语句作为待优化的SQL语句。
CN201710088152.5A 2017-02-20 2017-02-20 数据库***优化的方法及装置 Active CN107688589B (zh)

Priority Applications (8)

Application Number Priority Date Filing Date Title
CN201710088152.5A CN107688589B (zh) 2017-02-20 2017-02-20 数据库***优化的方法及装置
US16/084,228 US11132362B2 (en) 2017-02-20 2017-06-30 Method and system of optimizing database system, electronic device and storage medium
JP2018532071A JP6570156B2 (ja) 2017-02-20 2017-06-30 データベースシステム最適化の方法、システム、電子装置及び記憶媒体
AU2017399399A AU2017399399B2 (en) 2017-02-20 2017-06-30 Method and system for optimizing database system, electronic device, and storage medium
PCT/CN2017/091375 WO2018149085A1 (zh) 2017-02-20 2017-06-30 数据库***优化的方法、***、电子装置及存储介质
SG11201808828RA SG11201808828RA (en) 2017-02-20 2017-06-30 Method and system of optimizing database system, electronic device and storage medium
EP17882274.8A EP3388957B1 (en) 2017-02-20 2017-06-30 Method and system for optimizing database system, electronic device, and storage medium
KR1020187017569A KR102141083B1 (ko) 2017-02-20 2017-06-30 데이터베이스 시스템의 최적화 방법, 시스템, 전자장치 및 저장매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710088152.5A CN107688589B (zh) 2017-02-20 2017-02-20 数据库***优化的方法及装置

Publications (2)

Publication Number Publication Date
CN107688589A true CN107688589A (zh) 2018-02-13
CN107688589B CN107688589B (zh) 2019-02-26

Family

ID=61152404

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710088152.5A Active CN107688589B (zh) 2017-02-20 2017-02-20 数据库***优化的方法及装置

Country Status (8)

Country Link
US (1) US11132362B2 (zh)
EP (1) EP3388957B1 (zh)
JP (1) JP6570156B2 (zh)
KR (1) KR102141083B1 (zh)
CN (1) CN107688589B (zh)
AU (1) AU2017399399B2 (zh)
SG (1) SG11201808828RA (zh)
WO (1) WO2018149085A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109299132A (zh) * 2018-11-29 2019-02-01 中国人民财产保险股份有限公司 Sql数据处理方法、***以及电子设备
CN110888909A (zh) * 2018-09-07 2020-03-17 大唐移动通信设备有限公司 一种评估内容的数据统计处理方法及装置
CN115858399A (zh) * 2023-02-09 2023-03-28 创智和宇信息技术股份有限公司 一种利用线程栈快照进行代码级性能分析的方法和***

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110148011B (zh) * 2019-04-15 2024-03-22 平安科技(深圳)有限公司 基于大数据的活跃量下降分析方法、装置、设备及介质
CN111984685A (zh) * 2020-09-02 2020-11-24 深圳壹账通智能科技有限公司 数据倾斜检测方法、装置、计算机设备及可读存储介质
CN115037798B (zh) * 2022-08-11 2022-12-27 成都金诺信高科技有限公司 一种时统报文数据包分发方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541884A (zh) * 2010-12-10 2012-07-04 ***通信集团贵州有限公司 数据库优化方法和装置
CN103390066A (zh) * 2013-08-08 2013-11-13 上海新炬网络技术有限公司 一种数据库全局性自动化优化预警装置及其处理方法
US20150081669A1 (en) * 2007-09-14 2015-03-19 Oracle International Corporation Fully automated sql tuning
CN105243068A (zh) * 2014-07-09 2016-01-13 华为技术有限公司 数据库***的查询方法、服务器和能耗测试***
CN105302858A (zh) * 2015-09-18 2016-02-03 北京国电通网络技术有限公司 一种分布式数据库***的跨节点查询优化方法及***
CN105989137A (zh) * 2015-02-27 2016-10-05 ***通信集团河北有限公司 一种结构化查询语言性能优化方法及***
CN106372135A (zh) * 2016-08-26 2017-02-01 深圳市卓讯信息技术有限公司 一种结构化查询语言sql执行效率跟踪方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001175678A (ja) * 1999-12-20 2001-06-29 Toshiba Corp データベース・チューニング装置、データベース・チューニング方法、および記録媒体
US7747606B2 (en) * 2003-09-06 2010-06-29 Oracle International Corporation Automatic SQL tuning advisor
JP2007122405A (ja) * 2005-10-28 2007-05-17 Hitachi Ltd データベース管理システムの性能チューニングシステム
US8301636B2 (en) * 2005-12-15 2012-10-30 Microsoft Corporation Providing schedulable calendars electronically
CN103176974B (zh) 2011-12-20 2016-01-13 国际商业机器公司 优化数据库中访问路径的方法和装置
KR102160251B1 (ko) * 2013-10-23 2020-09-25 삼성전자주식회사 복수의 프로세서들을 병렬적으로 이용하여 시뮬레이션을 수행하는 방법 및 장치
US11232102B2 (en) * 2016-10-17 2022-01-25 Salesforce.Com, Inc. Background processing to provide automated database query tuning

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150081669A1 (en) * 2007-09-14 2015-03-19 Oracle International Corporation Fully automated sql tuning
CN102541884A (zh) * 2010-12-10 2012-07-04 ***通信集团贵州有限公司 数据库优化方法和装置
CN103390066A (zh) * 2013-08-08 2013-11-13 上海新炬网络技术有限公司 一种数据库全局性自动化优化预警装置及其处理方法
CN105243068A (zh) * 2014-07-09 2016-01-13 华为技术有限公司 数据库***的查询方法、服务器和能耗测试***
CN105989137A (zh) * 2015-02-27 2016-10-05 ***通信集团河北有限公司 一种结构化查询语言性能优化方法及***
CN105302858A (zh) * 2015-09-18 2016-02-03 北京国电通网络技术有限公司 一种分布式数据库***的跨节点查询优化方法及***
CN106372135A (zh) * 2016-08-26 2017-02-01 深圳市卓讯信息技术有限公司 一种结构化查询语言sql执行效率跟踪方法及装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110888909A (zh) * 2018-09-07 2020-03-17 大唐移动通信设备有限公司 一种评估内容的数据统计处理方法及装置
CN110888909B (zh) * 2018-09-07 2022-09-23 大唐移动通信设备有限公司 一种评估内容的数据统计处理方法及装置
CN109299132A (zh) * 2018-11-29 2019-02-01 中国人民财产保险股份有限公司 Sql数据处理方法、***以及电子设备
CN109299132B (zh) * 2018-11-29 2021-08-06 中国人民财产保险股份有限公司 Sql数据处理方法、***以及电子设备
CN115858399A (zh) * 2023-02-09 2023-03-28 创智和宇信息技术股份有限公司 一种利用线程栈快照进行代码级性能分析的方法和***
CN115858399B (zh) * 2023-02-09 2023-05-05 创智和宇信息技术股份有限公司 一种利用线程栈快照进行代码级性能分析的方法和***

Also Published As

Publication number Publication date
WO2018149085A1 (zh) 2018-08-23
US20190065548A1 (en) 2019-02-28
AU2017399399B2 (en) 2020-01-23
EP3388957A1 (en) 2018-10-17
EP3388957B1 (en) 2020-10-14
US11132362B2 (en) 2021-09-28
EP3388957A4 (en) 2018-11-07
SG11201808828RA (en) 2018-11-29
CN107688589B (zh) 2019-02-26
JP6570156B2 (ja) 2019-09-04
AU2017399399A1 (en) 2018-10-11
KR102141083B1 (ko) 2020-08-05
KR20190022434A (ko) 2019-03-06
JP2019508774A (ja) 2019-03-28

Similar Documents

Publication Publication Date Title
CN107688589A (zh) 数据库***优化的方法及装置
CN105701216B (zh) 一种信息推送方法及装置
CN107526807B (zh) 信息推荐方法及装置
CN106980573B (zh) 一种构建测试用例请求对象的方法、装置及***
CN108027763B (zh) 关系型数据库的调整装置和方法
CN103365765A (zh) 测试用例筛选方法和***
CN102637178A (zh) 一种音乐推荐方法、装置及***
CN104866580A (zh) 一种数据库变更对现有业务影响的快速侦测方法
KR101868729B1 (ko) 리소스조합 처리방법, 장치, 설비 및 컴퓨터 저장매체
CN108897821B (zh) 自动生成数据结论的方法及装置
CN105354697A (zh) 一种基于财务科目规则库的自动在线审计方法及***
CN103336771A (zh) 基于滑动窗口的数据相似检测方法
CN105740434B (zh) 网络信息评分方法及装置
CN110287114B (zh) 一种数据库脚本性能测试的方法及装置
CN106951360B (zh) 数据统计完整度计算方法和***
CN107368303B (zh) 一种基于软件架构的可演进性度量方法
CN111046141B (zh) 一种基于历史时间特征的文本库关键词精炼方法
CN105242873B (zh) 云计算***的性能数据的采集与存储方法及装置
CN106874332B (zh) 数据库访问方法和装置
CN106991039A (zh) 用于平台自适应引擎***的测试方法及装置
CN106815277B (zh) 搜索引擎优化的评估方法及装置
CN112948429B (zh) 一种数据报送方法、装置和设备
CN113886373A (zh) 一种数据处理方法、装置及电子设备
CN116467551B (zh) 一种基于相关系数的供水管网漏损定位方法及***
CN103136440A (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