CN107688589B - 数据库系统优化的方法及装置 - Google Patents
数据库系统优化的方法及装置 Download PDFInfo
- Publication number
- CN107688589B CN107688589B CN201710088152.5A CN201710088152A CN107688589B CN 107688589 B CN107688589 B CN 107688589B CN 201710088152 A CN201710088152 A CN 201710088152A CN 107688589 B CN107688589 B CN 107688589B
- Authority
- CN
- China
- Prior art keywords
- sql statement
- data
- caching
- preset
- reads
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- 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/3409—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 for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using 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 (6)
1.一种数据库系统优化的方法,其特征在于,所述数据库系统优化的方法包括:
S1,每隔预设的第一时间对数据库系统的各SQL语句的性能数据进行快照,将所述快照按时间顺序排列并保存,所述性能数据包括执行次数和缓存读数据量;
S2,将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算,以计算出预设的第一时间内各SQL语句对应的缓存读数据总量及单次执行缓存读数据平均量;
S3,获取每一SQL语句的缓存读数据总量及单次执行缓存读数据平均量的数值之和,基于所述数值之和选出待优化的SQL语句;
所述步骤S3包括:
S31,将各SQL语句按照对应的缓存读数据总量大小进行第一次排序,并将各SQL语句按照对应的单次执行缓存读数据平均量大小进行第二次排序,获取各SQL语句以所述第一次排序及第二次排序为基准的综合排序;
S32,基于所述综合排序并利用预设的计算规则计算出各SQL语句对应的目标值,根据所述目标值选出待优化的SQL语句;
所述步骤S32包括:
计算各SQL语句的综合排序对应的综合序号与所有SQL语句的数量之商,以得到各SQL语句对应的目标值;
分析预设的第二时间内是否有至少一个SQL语句的目标值,所述预设的第二时间大于所述预设的第一时间;
若是,则将所述预设的第二时间内相同的SQL语句对应的目标值进行累加,以得到相同的SQL语句的目标值总和;
将所述目标值总和大于等于预设数值的SQL语句作为待优化的SQL语句。
2.根据权利要求1所述的数据库系统优化的方法,其特征在于,所述步骤S2替换为:
将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算,以计算出预设的第一时间内各SQL语句对应的缓存读数据总量、所有SQL语句的缓存读数据总量之和及各SQL语句对应的单次执行缓存读数据平均量;
获取各SQL语句对应的缓存读数据总量与所有SQL语句的缓存读数据总量之和的比值;
将所述比值大于预设比值对应的SQL语句作为执行所述步骤S3的SQL语句。
3.根据权利要求1所述的数据库系统优化的方法,其特征在于,所述步骤S2之后包括:
S201,分析是否有SQL语句对应的单次执行缓存读数据平均量小于等于预设的数据量;
S202,若是,将单次执行缓存读数据平均量小于等于预设的数据量的SQL语句进行过滤,并将单次执行缓存读数据平均量大于预设的数据量的SQL语句作为执行所述步骤S3的SQL语句。
4.一种数据库系统优化的装置,其特征在于,所述数据库系统优化的装置包括:
快照模块,用于每隔预设的第一时间对数据库系统的各SQL语句的性能数据进行快照,将所述快照按时间顺序排列并保存,所述性能数据包括执行次数和缓存读数据量;
计算模块,用于将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算,以计算出预设的第一时间内各SQL语句对应的缓存读数据总量及单次执行缓存读数据平均量;
选择模块,用于获取每一SQL语句的缓存读数据总量及单次执行缓存读数据平均量的数值之和,基于所述数值之和选出待优化的SQL语句;
所述选择模块包括:
排序单元,用于将各SQL语句按照对应的缓存读数据总量大小进行第一次排序,并将各SQL语句按照对应的单次执行缓存读数据平均量大小进行第二次排序,获取各SQL语句以所述第一次排序及第二次排序为基准的综合排序;
选择单元,用于基于所述综合排序并利用预设的计算规则计算出各SQL语句对应的目标值,根据所述目标值选出待优化的SQL语句;
所述选择单元具体用于计算各SQL语句的综合排序对应的综合序号与所有SQL语句的数量之商,以得到各SQL语句对应的目标值;分析预设的第二时间内是否有至少一个SQL语句的目标值,所述预设的第二时间大于所述预设的第一时间;若是,则将所述预设的第二时间内相同的SQL语句对应的目标值进行累加,以得到相同的SQL语句的目标值总和;将所述目标值总和大于等于预设数值的SQL语句作为待优化的SQL语句。
5.根据权利要求4所述的数据库系统优化的装置,其特征在于,所述计算模块替换为处理模块,用于将当前快照的性能数据与上一顺序的快照的性能数据分别对应进行差异计算,以计算出预设的第一时间内各SQL语句对应的缓存读数据总量、所有SQL语句的缓存读数据总量之和及各SQL语句对应的单次执行缓存读数据平均量;获取各SQL语句对应的缓存读数据总量与所有SQL语句的缓存读数据总量之和的比值;将所述比值大于预设比值对应的SQL语句作为所述选择模块的SQL语句。
6.根据权利要求4所述的数据库系统优化的装置,其特征在于,所述数据库系统优化的装置还包括:
分析模块,用于分析是否有SQL语句对应的单次执行缓存读数据平均量小于等于预设的数据量;
过滤模块,用于若是,将单次执行缓存读数据平均量小于等于预设的数据量的SQL语句进行过滤,并将单次执行缓存读数据平均量大于预设的数据量的SQL语句作为所述选择模块的SQL语句。
Priority Applications (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710088152.5A CN107688589B (zh) | 2017-02-20 | 2017-02-20 | 数据库系统优化的方法及装置 |
KR1020187017569A KR102141083B1 (ko) | 2017-02-20 | 2017-06-30 | 데이터베이스 시스템의 최적화 방법, 시스템, 전자장치 및 저장매체 |
PCT/CN2017/091375 WO2018149085A1 (zh) | 2017-02-20 | 2017-06-30 | 数据库系统优化的方法、系统、电子装置及存储介质 |
US16/084,228 US11132362B2 (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 |
AU2017399399A AU2017399399B2 (en) | 2017-02-20 | 2017-06-30 | Method and system for optimizing database system, electronic device, and storage medium |
JP2018532071A JP6570156B2 (ja) | 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 |
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 CN107688589A (zh) | 2018-02-13 |
CN107688589B true 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) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110888909B (zh) * | 2018-09-07 | 2022-09-23 | 大唐移动通信设备有限公司 | 一种评估内容的数据统计处理方法及装置 |
CN109299132B (zh) * | 2018-11-29 | 2021-08-06 | 中国人民财产保险股份有限公司 | Sql数据处理方法、系统以及电子设备 |
CN110148011B (zh) * | 2019-04-15 | 2024-03-22 | 平安科技(深圳)有限公司 | 基于大数据的活跃量下降分析方法、装置、设备及介质 |
CN111984685A (zh) * | 2020-09-02 | 2020-11-24 | 深圳壹账通智能科技有限公司 | 数据倾斜检测方法、装置、计算机设备及可读存储介质 |
CN115037798B (zh) * | 2022-08-11 | 2022-12-27 | 成都金诺信高科技有限公司 | 一种时统报文数据包分发方法 |
CN115858399B (zh) * | 2023-02-09 | 2023-05-05 | 创智和宇信息技术股份有限公司 | 一种利用线程栈快照进行代码级性能分析的方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103390066A (zh) * | 2013-08-08 | 2013-11-13 | 上海新炬网络技术有限公司 | 一种数据库全局性自动化优化预警装置及其处理方法 |
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 (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001175678A (ja) * | 1999-12-20 | 2001-06-29 | Toshiba Corp | データベース・チューニング装置、データベース・チューニング方法、および記録媒体 |
US7805411B2 (en) * | 2003-09-06 | 2010-09-28 | Oracle International Corporation | Auto-tuning SQL statements |
JP2007122405A (ja) * | 2005-10-28 | 2007-05-17 | Hitachi Ltd | データベース管理システムの性能チューニングシステム |
US8301636B2 (en) * | 2005-12-15 | 2012-10-30 | Microsoft Corporation | Providing schedulable calendars electronically |
US8903801B2 (en) * | 2007-09-14 | 2014-12-02 | Oracle International Corporation | Fully automated SQL tuning |
CN102541884B (zh) * | 2010-12-10 | 2014-07-02 | 中国移动通信集团贵州有限公司 | 数据库优化方法和装置 |
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 |
-
2017
- 2017-02-20 CN CN201710088152.5A patent/CN107688589B/zh active Active
- 2017-06-30 JP JP2018532071A patent/JP6570156B2/ja active Active
- 2017-06-30 US US16/084,228 patent/US11132362B2/en active Active
- 2017-06-30 SG SG11201808828RA patent/SG11201808828RA/en unknown
- 2017-06-30 EP EP17882274.8A patent/EP3388957B1/en active Active
- 2017-06-30 WO PCT/CN2017/091375 patent/WO2018149085A1/zh active Application Filing
- 2017-06-30 KR KR1020187017569A patent/KR102141083B1/ko active IP Right Grant
- 2017-06-30 AU AU2017399399A patent/AU2017399399B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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执行效率跟踪方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107688589A (zh) | 2018-02-13 |
AU2017399399A1 (en) | 2018-10-11 |
EP3388957A4 (en) | 2018-11-07 |
KR20190022434A (ko) | 2019-03-06 |
AU2017399399B2 (en) | 2020-01-23 |
EP3388957A1 (en) | 2018-10-17 |
WO2018149085A1 (zh) | 2018-08-23 |
JP6570156B2 (ja) | 2019-09-04 |
KR102141083B1 (ko) | 2020-08-05 |
EP3388957B1 (en) | 2020-10-14 |
US11132362B2 (en) | 2021-09-28 |
US20190065548A1 (en) | 2019-02-28 |
JP2019508774A (ja) | 2019-03-28 |
SG11201808828RA (en) | 2018-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107688589B (zh) | 数据库系统优化的方法及装置 | |
US5655074A (en) | Method and system for conducting statistical quality analysis of a complex system | |
US9268665B2 (en) | System and method for identifying fault prone computer code files | |
CN103365765A (zh) | 测试用例筛选方法和系统 | |
JP5034955B2 (ja) | 性能評価シミュレーション装置、性能評価シミュレーション方法および性能評価シミュレーションプログラム | |
CN105468512A (zh) | 一种对软件质量进行评估的方法和系统 | |
CN105468510A (zh) | 对软件质量进行评估与追踪的方法和系统 | |
CN107016019B (zh) | 数据库索引创建方法及装置 | |
US8245084B2 (en) | Two-level representative workload phase detection | |
CN110532187B (zh) | 一种hdfs吞吐性能测试方法、系统、终端及存储介质 | |
CN114461534A (zh) | 软件性能测试方法、系统、电子设备及可读存储介质 | |
CN110287114B (zh) | 一种数据库脚本性能测试的方法及装置 | |
CN106951360B (zh) | 数据统计完整度计算方法和系统 | |
CN102521135B (zh) | 线性系统的测试方法和装置 | |
CN106980673B (zh) | 内存数据库表索引更新方法及系统 | |
CN109408225B (zh) | 资源扩容方法、装置、计算机设备以及存储介质 | |
CN107273293B (zh) | 大数据系统性能测试方法、装置及电子设备 | |
CN110597729B (zh) | 基于维度的压力测试方法、装置及系统 | |
CN110927338B (zh) | 气体浓度数据补足方法及装置 | |
Uddin et al. | Signature-based high-level simulation of microthreaded many-core architectures | |
CN108959042A (zh) | 一种基线管理中基线数据计算方法 | |
Wylie et al. | Performance analysis and tuning of the XNS CFD solver on Blue Gene/L | |
Uddin et al. | Analytical-based high-level simulation of the microthreaded many-core architectures | |
Liu et al. | GraphCoder: Enhancing Repository-Level Code Completion via Code Context Graph-based Retrieval and Language Model | |
CN110895529B (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 |