CN108509530A - 一种MySQL慢查询语句自动优化方法、计算机设备和存储介质 - Google Patents
一种MySQL慢查询语句自动优化方法、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN108509530A CN108509530A CN201810209933.XA CN201810209933A CN108509530A CN 108509530 A CN108509530 A CN 108509530A CN 201810209933 A CN201810209933 A CN 201810209933A CN 108509530 A CN108509530 A CN 108509530A
- Authority
- CN
- China
- Prior art keywords
- slow query
- function
- sql
- executive plan
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种MySQL慢查询语句自动优化方法、计算机设备和存储介质,可以应用于OLTP系统中,该方法包括:通过慢查询SQL获取函数获取慢查询语句;通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中;通过执行计划获取函数获取所述慢查询语句的执行计划;通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入所述调优结果集中;若所述调优结果集为空,则通过SQL语句改写函数获取预置数量的改写SQL语句,并存入所述调优结果集中;采用web形式展示所述调优结果集。可见,本发明可以在OLTP系统中,自动优化MySQL慢查询语句,大大提高了工作效率。
Description
技术领域
本发明属于数据库管理领域,尤其涉及一种MySQL慢查询语句自动优化方法、计算机设备和存储介质。
背景技术
慢查询就是超过指定时间的SQL语句,系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息记录下来。
传统的慢查询语句优化方案,基本上都是人工优化,根据经验和一些优化规则进行人工优化,当管理的数据库有成千上百个的时候,需要花费大量的人力成本对慢查询语句进行性能调优。
而在OLTP(On-Line Transaction Processing,联机事务处理过程)系统中,一般都是一些结构比较简单的SQL语句,若使用人工优化慢查询语句,将存在大量的重复性工作。可见,现有技术中,使用人工优化OLTP系统中的慢查询语句,存在效率低下的问题。
发明内容
本申请实施例通过提供一种MySQL慢查询语句自动优化方法、计算机设备和存储介质,解决了现有技术在优化OLTP系统的慢查询语句中,效率低下的问题。
第一方面,本申请提供了一种MySQL慢查询语句自动优化方法,其特征在于,所述方法应用于OLTP系统中,包括:
通过慢查询SQL获取函数获取慢查询语句;
通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中;
通过执行计划获取函数获取所述慢查询语句的执行计划;
通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入所述调优结果集中;
若所述调优结果集为空,则通过SQL语句改写函数获取预置数量的改写SQL语句,并存入所述调优结果集中;
采用web形式展示所述调优结果集。
可选的,所述方法还包括:
通过日志输出函数记录整个调优过程,所述日志输出函数采用python的logging模块进行模块化的日志设置。
可选的,所述通过慢查询SQL获取函数获取慢查询语句包括:
从慢查询文件中获取慢查询语句;
将所述慢查询语句保存在数据库的表中,其中,表的每一行的信息包括SQL内容、查询时间、运行时间、锁时间、扫描行数和发送行数。
可选的,所述通过执行计划获取函数获取所述慢查询语句的执行计划包括:
通过MySQL的explain语句获取所述慢查询语句的执行计划,并将所述执行计划存入数据库中。
第二方面,本申请提供了一种MySQL慢查询语句自动优化装置,其特征在于,所述装置应用于OLTP系统中,包括:
获取模块,用于通过慢查询SQL获取函数获取慢查询语句;
检查模块,用于通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中;
获取模块还用于通过执行计划获取函数获取所述慢查询语句的执行计划;
检查模块还用于通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入所述调优结果集中;
改写模块,用于若所述调优结果集为空,则通过SQL语句改写函数获取预置数量的改写SQL语句,并存入所述调优结果集中;
展示模块,用于采用web形式展示所述调优结果集。
可选的,所述装置还包括:
记录模块,用于通过日志输出函数记录整个调优过程,所述日志输出函数采用python的logging模块进行模块化的日志设置。
可选的,所述获取模块用于通过慢查询SQL获取函数获取慢查询语句具体包括:
用于从慢查询文件中获取慢查询语句;
用于将所述慢查询语句保存在数据库的表中,其中,表的每一行的信息包括SQL内容、查询时间、运行时间、锁时间、扫描行数和发送行数。
可选的,所述获取模块还用于通过执行计划获取函数获取所述慢查询语句的执行计划具体包括:
用于通过MySQL的explain语句获取所述慢查询语句的执行计划,并将所述执行计划存入数据库中。
第三方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
通过慢查询SQL获取函数获取慢查询语句;
通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中;
通过执行计划获取函数获取所述慢查询语句的执行计划;
通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入所述调优结果集中;
若所述调优结果集为空,则通过SQL语句改写函数获取预置数量的改写SQL语句,并存入所述调优结果集中;
采用web形式展示所述调优结果集。
第四方面,本申请还提供了一种计算机设备,包括处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
通过慢查询SQL获取函数获取慢查询语句;
通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中;
通过执行计划获取函数获取所述慢查询语句的执行计划;
通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入所述调优结果集中;
若所述调优结果集为空,则通过SQL语句改写函数获取预置数量的改写SQL语句,并存入所述调优结果集中;
采用web形式展示所述调优结果集。
可见,本申请通过慢查询SQL获取函数获取慢查询语句;通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中;通过执行计划获取函数获取所述慢查询语句的执行计划;通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入所述调优结果集中;若所述调优结果集为空,则通过SQL语句改写函数获取预置数量的改写SQL语句,并存入所述调优结果集中;采用web形式展示所述调优结果集。可以在OLTP系统中,自动优化MySQL慢查询语句,相比人工优化,大大提高了工作效率。
附图说明
图1为本申请实施例中提供的MySQL慢查询语句自动优化方法的流程图;
图2为本申请实施例中提供的MySQL慢查询语句自动优化装置的结构示意图;
图3为本申请实施例中提供的计算机可读存储介质的结构示意图;
图4为本申请实施例中提供的计算机设备的结构示意图。
具体实施方式
本申请实施例提供了一种MySQL慢查询语句自动优化方法、计算机设备和存储介质,解决了现有技术在OLTP系统中,使用人工优化慢查询语句,效率低下的问题。可以在OLTP系统中,自动优化MySQL慢查询语句,提高工作效率。
本申请实施例应用于OLTP系统中,本申请实施例的技术方案为解决上述技术问题,总体思路如下:
通过慢查询SQL获取函数获取慢查询语句;
通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中;
通过执行计划获取函数获取所述慢查询语句的执行计划;
通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入所述调优结果集中;
若所述调优结果集为空,则通过SQL语句改写函数获取预置数量的改写SQL语句,并存入所述调优结果集中;
采用web形式展示所述调优结果集。
本申请实施例通过慢查询SQL获取函数获取慢查询语句;通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中;通过执行计划获取函数获取所述慢查询语句的执行计划;通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入所述调优结果集中;若所述调优结果集为空,则通过SQL语句改写函数获取预置数量的改写SQL语句,并存入所述调优结果集中;采用web形式展示所述调优结果集。可以在OLTP系统中,自动优化MySQL慢查询语句,相比人工优化,大大提高了工作效率。
为了更好的理解上述技术方案,以下结合附图以及具体实施例,对上述技术方案进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
为了更好地理解本申请,对本申请涉及的一些技术解释如下:
OLTP(On-Line Transaction Processing,联机事务处理过程):也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。在OLTP系统中,一般都是一些结构比较简单的SQL语句,所以现有技术中使用人工审核慢查询语句的方法,存在大量重复性工作。
python的logging(日志)模块:python是一种面向对象的解释型计算机程序设计语言。python的logging模块主要分为四个部分,Loggers,用于提供应用程序直接使用的接口;Handlers,用于将Loggers产生的日志传到指定位置;Filters,用于对输出日志进行过滤;Formatters,用于控制输出格式。
SQL(结构化查询语言,Structured Query Language):是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
MySQL:一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
慢查询:是指超过指定时间的SQL语句,系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息记录下来。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
请参阅图1,本实施例应用于OLTP系统中,本实施例提供的MySQL慢查询语句自动优化方法包括以下步骤:
S101、通过慢查询SQL获取函数获取慢查询语句;
具体的,通过慢查询SQL获取函数获取慢查询语句可以包括但不限于:
先从慢查询文件中获取慢查询语句,实际操作中,可以逐个获取慢查询语句再逐个优化,也可以一次获取全部的慢查询语句,再逐个优化,此处不做太多限定;
再将每个慢查询语句逐行保存在数据库的表中,其中,表的每一行的信息包括但不限于SQL内容、查询时间、运行时间、锁时间、扫描行数和发送行数。
S102、通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中;
具体的,通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查可以包括但不限于:
遍历步骤S101保存的所有慢查询,逐行进行分析,分析步骤如下:
a.发送行数如果大于5k且发送行数/扫描行数<10,或者,发送行数如果大于10k,则在优化建议中插入App-fetchrow,其中,发送行数/扫描行数<10应该理解为发送行数与扫描行数的比值小于10。其中,App-fetchrow为优化结果的一个编码,表示OLTP系统的查询不应该返回过多的行数,需要在应用代码设计层面进行分批获取的方式来优化。
需要说明的是,为了便于记录和向管理人员展示调优结果集,可以使用优化结果编码定义函数来定义各个编码与优化结果的对应关系,例如编码App-fetchrow对应的优化结果为OLTP系统的查询不应该返回过多的行数,需要在应用代码设计层面进行分批获取的方式来优化,编码SQL-star对应的优化结果为不要使用select*来检索数据,用select具体的列来替代该写法,下文将在涉及编码时,对编码的优化结果进行相应的解释,此处不再一一列举。
b.对SQL语句的内容进行检查,是否存在select*,如果存在,则在优化建议中插入SQL-star。其中,SQL-star为优化结果的一个编码,表示不要使用select*来检索数据,用select具体的列来替代该写法。
c.对SQL语句的内容进行检查,是否存在like‘%,如果存在,则在优化建议中插入SQL-like。其中,SQL-like为优化结果的一个编码,表示前模糊匹配是无法使用索引的,请检查是否有必要使用前迷糊匹配。
d.对SQL语句的内容进行检查,是否存在union并且union后面没有出现all,如果符合,则在优化建议中插入SQL-union。其中,SQL-union为优化结果的一个编码,表示在能使用union all的情况下,尽量使用union all来替代union。
并将检查结果存入调优结果集,也就是将检查后得到的优化结果对应的编码存入调优结果集中。
可以理解的是,以上仅为通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中的一个示例,实际操作中,也可以定义其他不同的优化规则,或者使用相同的规则但采用不同的程序语言进行表达,此处不做太多限定。
还需要说明的是,步骤a、b、c、d不存在执行的先后顺序,也可以按照其他顺序执行,此处不做太多限定。
S103、通过执行计划获取函数获取所述慢查询语句的执行计划;
执行计划是进行SQL语句调优时的一个重要依据,可以知道MySQL是如何处理SQL语句的,继而分析SQL语句或者表结构的性能瓶颈。
具体的,通过执行计划获取函数获取所述慢查询语句的执行计划可以包括但不限于:
通过MySQL的explain语句获取所述慢查询语句的执行计划,并将所述执行计划存入数据库中。
S104、通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入所述调优结果集中;
执行计划分析函数主要是用来对步骤S103获取的执行计划进行分析,具体的,通过执行计划分析函数对所述执行计划的索引和表结构进行检查包括但不限于:
a.按照table这一列进行分组,然后对每一组进行循环;
b.在table相同的每一个组内,再按照rows这一列进行由高到低排序,取出每一组的rows这一列最大的那一行数据作为待处理结果集;
c.遍历步骤b获得的结果集,查看rows这一列的值,是否有大于100k。如果有的话,则看该行执行计划对应的type列的值,如果值为ALL,则把在优化建议中插入Idx-create。其中,Idx-create为优化结果的一个编码,表示需要对table的查询谓词列上创建一个索引;
如果值不为ALL,则去判断Extra列的值,如果能够找到Using filesort或者Usingtemporary,则在优化建议中插入Idx-rewrite。其中,Idx-rewrite为优化结果的一个编码,表示需要把该table的索引修改为创建联合,包含用来排序的谓词列;
d.如果步骤a获取的不同table的个数超过2个,并且总的row的值超过100K,则在优化建议中插入SQL-join。其中,SQL-join为优化结果的一个编码,表示OLTP系统中尽量避免对大表进行join,建议拆分成几个小SQL在程序中进行合并处理;
e.用MySQL的show create table语句对步骤a获取的所有table取出DDL,然后检查索引个数,如果索引个数大于预置的数量,则在优化建议中插入Table-idxNum。优选的,如果索引个数大于6,则在优化建议中插入Table-idxNum。其中,Table-idxNum为优化结果的一个编码,表示同一张表中的索引个数不要超过预置的数量,请检查不必要的索引并删除;
如果没有找到主键或者引擎不是innodb,则在优化建议中插入Table-primary。其中,Table-primary为优化结果的一个编码,表示引擎必须要innodb并且必须设置主键。
并将检查结果存入调优结果集,也就是将检查后得到的优化结果对应的编码存入调优结果集。
可以理解的是,以上仅为通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入调优结果集中的一个示例,实际操作中,也可以定义其他不同的优化规则,或者使用相同的规则但采用不同的程序语言进行表达,此处不做太多限定。
S105、若所述调优结果集为空,则通过SQL语句改写函数获取预置数量的改写SQL语句,并存入所述调优结果集中;
可以理解的是,调优结果集为空表示通过步骤S101-S104并没有获取到优化结果。
具体的,通过SQL语句改写函数获取预置数量的改写SQL语句包括但不限于:
a.对于步骤S104中,通过a步骤获取到的所有表,使用show index from语句来获取表格所有的索引名字;
b.依次遍历所有的表和索引名字,把SQL语句中的from表后面加上force index(该表的索引)语句,这样循环之后,可以得出M个表*N个索引条改写的SQL语句,即M乘N条改写SQL语句;
c.对步骤b得出的所有SQL语句,用explain进行获取执行计划;
d.然后把每一条语句执行计划的rows总和计算出来,取出预置数量的改写SQL语句。优选的,可以取出前3条性能最优的执行计划对应的改写SQL语句。
并存入所述调优结果集中,即将取出的预置数量的执行计划对应的改写SQL语句存入调优结果集中。
可以理解的是,以上仅为通过SQL语句改写函数获取预置数量的改写SQL语句,并存入调优结果集中的一个示例,实际操作中,也可以定义其他不同的优化规则,或者使用相同的规则但采用不同的程序语言进行表达,此处不做太多限定。
进一步的,若所述调优结果集不为空,即表示通过步骤S101-S104已经得到至少一条优化结果,则直接执行步骤S106,不需获取改写SQL语句。
S106、采用web形式展示所述调优结果集。
具体的,可以采用django的web形式,把至少一条慢查询SQL的调优结果集展示在页面上,便于开发人员进行自查。
进一步的,为了方便管理人员以后的核查,对于调优的整个过程,可以在日志中显示具体的自动分析步骤,基于此,本申请实施例一还可以包括:
通过日志输出函数记录整个调优过程,所述日志输出函数采用python的logging模块进行模块化的日志设置。
本申请实施例一通过慢查询SQL获取函数获取慢查询语句;通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中;通过执行计划获取函数获取所述慢查询语句的执行计划;通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入所述调优结果集中;若所述调优结果集为空,则通过SQL语句改写函数获取预置数量的改写SQL语句,并存入所述调优结果集中;采用web形式展示所述调优结果集。可以在OLTP系统中,自动优化MySQL慢查询语句,相比人工优化,大大提高了工作效率。
基于同一发明构思,本申请提供了一种MySQL慢查询语句自动优化装置,详见图2,下面将结合图2对实施例二进行介绍。
实施例二:
请参阅图2,本实施例应用于OLTP系统中,本实施例提供的MySQL慢查询语句自动优化装置包括:
获取模块201,用于通过慢查询SQL获取函数获取慢查询语句;
具体的,所述获取模块201用于通过慢查询SQL获取函数获取慢查询语句具体包括:
用于从慢查询文件中获取慢查询语句;
用于将所述慢查询语句保存在数据库的表中,其中,表的每一行的信息包括SQL内容、查询时间、运行时间、锁时间、扫描行数和发送行数。
检查模块202,用于通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中;
获取模块201还用于通过执行计划获取函数获取所述慢查询语句的执行计划;
具体的,所述获取模块201还用于通过执行计划获取函数获取所述慢查询语句的执行计划具体包括:
用于通过MySQL的explain语句获取所述慢查询语句的执行计划,并将所述执行计划存入数据库中。
检查模块202还用于通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入所述调优结果集中;
改写模块203,用于若所述调优结果集为空,则通过SQL语句改写函数获取预置数量的改写SQL语句,并存入所述调优结果集中;
展示模块204,用于采用web形式展示所述调优结果集。
进一步的,为了方便管理人员以后的核查,对于调优的整个过程,可以在日志中显示具体的自动分析步骤,基于此,本申请实施例二还可以包括:
记录模块,用于通过日志输出函数记录整个调优过程,所述日志输出函数采用python的logging模块进行模块化的日志设置。
本申请实施例二提供的MySQL慢查询语句自动优化装置及本申请实施例一提供的MySQL慢查询语句自动优化方法属于同一构思,其具体实现过程详见说明书全文,此处不再赘述。
基于同一发明构思,本申请提供了一种计算机可读存储介质,详见图3,下面将结合图3对实施例三进行介绍。
实施例三:
本实施例提供了一种计算机可读存储介质300,所述计算机可读存储介质300存储有计算机程序311,所述计算机程序311被处理器执行时实现以下步骤:
通过慢查询SQL获取函数获取慢查询语句;
通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中;
通过执行计划获取函数获取所述慢查询语句的执行计划;
通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入所述调优结果集中;
若所述调优结果集为空,则通过SQL语句改写函数获取预置数量的改写SQL语句,并存入所述调优结果集中;
采用web形式展示所述调优结果集。
在具体实施过程中,该计算机程序311被处理器执行时,可以实现实施例一中任一实施方式。
基于同一发明构思,本申请还提供了一种计算机设备,详见图4,下面将结合图4对实施例四进行介绍。
实施例四:
本申请提供了一种计算机设备400,包括处理器420、存储器410以及存储在存储器410上并可在处理器420上运行的计算机程序411,所述处理器420执行所述计算机程序411时实现以下步骤:
通过慢查询SQL获取函数获取慢查询语句;
通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中;
通过执行计划获取函数获取所述慢查询语句的执行计划;
通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入所述调优结果集中;
若所述调优结果集为空,则通过SQL语句改写函数获取预置数量的改写SQL语句,并存入所述调优结果集中;
采用web形式展示所述调优结果集。
由于本实施例所介绍的计算机设备400为实施本申请实施例一中MySQL慢查询语句自动优化方法所采用的设备,故而基于本申请实施例一中所介绍的方法,本领域所属技术人员能够了解本实施例的计算机设备400的具体实施方式以及其各种变化形式,所以在此对于该计算机设备400如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种MySQL慢查询语句自动优化方法,其特征在于,所述方法应用于OLTP系统中,包括:
通过慢查询SQL获取函数获取慢查询语句;
通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中;
通过执行计划获取函数获取所述慢查询语句的执行计划;
通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入所述调优结果集中;
若所述调优结果集为空,则通过SQL语句改写函数获取预置数量的改写SQL语句,并存入所述调优结果集中;
采用web形式展示所述调优结果集。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
通过日志输出函数记录整个调优过程,所述日志输出函数采用python的logging模块进行模块化的日志设置。
3.如权利要求1所述的方法,其特征在于,所述通过慢查询SQL获取函数获取慢查询语句包括:
从慢查询文件中获取慢查询语句;
将所述慢查询语句保存在数据库的表中,其中,表的每一行的信息包括SQL内容、查询时间、运行时间、锁时间、扫描行数和发送行数。
4.如权利要求1-3任一项所述的方法,其特征在于,所述通过执行计划获取函数获取所述慢查询语句的执行计划包括:
通过MySQL的explain语句获取所述慢查询语句的执行计划,并将所述执行计划存入数据库中。
5.一种MySQL慢查询语句自动优化装置,其特征在于,所述装置应用于OLTP系统中,包括:
获取模块,用于通过慢查询SQL获取函数获取慢查询语句;
检查模块,用于通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中;
获取模块还用于通过执行计划获取函数获取所述慢查询语句的执行计划;
检查模块还用于通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入所述调优结果集中;
改写模块,用于若所述调优结果集为空,则通过SQL语句改写函数获取预置数量的改写SQL语句,并存入所述调优结果集中;
展示模块,用于采用web形式展示所述调优结果集。
6.如权利要求5所述的装置,其特征在于,所述装置还包括:
记录模块,用于通过日志输出函数记录整个调优过程,所述日志输出函数采用python的logging模块进行模块化的日志设置。
7.如权利要求5所述的装置,其特征在于,所述获取模块用于通过慢查询SQL获取函数获取慢查询语句具体包括:
用于从慢查询文件中获取慢查询语句;
用于将所述慢查询语句保存在数据库的表中,其中,表的每一行的信息包括SQL内容、查询时间、运行时间、锁时间、扫描行数和发送行数。
8.如权利要求5-7任一项所述的装置,其特征在于,所述获取模块还用于通过执行计划获取函数获取所述慢查询语句的执行计划具体包括:
用于通过MySQL的explain语句获取所述慢查询语句的执行计划,并将所述执行计划存入数据库中。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
通过慢查询SQL获取函数获取慢查询语句;
通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中;
通过执行计划获取函数获取所述慢查询语句的执行计划;
通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入所述调优结果集中;
若所述调优结果集为空,则通过SQL语句改写函数获取预置数量的改写SQL语句,并存入所述调优结果集中;
采用web形式展示所述调优结果集。
10.一种计算机设备,包括处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
通过慢查询SQL获取函数获取慢查询语句;
通过慢查询SQL初步分析函数对所述慢查询语句的行数和语句内容进行检查,并将检查结果存入调优结果集中;
通过执行计划获取函数获取所述慢查询语句的执行计划;
通过执行计划分析函数对所述执行计划的索引和表结构进行检查,并将检查结果存入所述调优结果集中;
若所述调优结果集为空,则通过SQL语句改写函数获取预置数量的改写SQL语句,并存入所述调优结果集中;
采用web形式展示所述调优结果集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810209933.XA CN108509530A (zh) | 2018-03-14 | 2018-03-14 | 一种MySQL慢查询语句自动优化方法、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810209933.XA CN108509530A (zh) | 2018-03-14 | 2018-03-14 | 一种MySQL慢查询语句自动优化方法、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108509530A true CN108509530A (zh) | 2018-09-07 |
Family
ID=63376670
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810209933.XA Pending CN108509530A (zh) | 2018-03-14 | 2018-03-14 | 一种MySQL慢查询语句自动优化方法、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108509530A (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947828A (zh) * | 2019-03-15 | 2019-06-28 | 优信拍(北京)信息科技有限公司 | 一种处理报表数据的方法和装置 |
CN110297814A (zh) * | 2019-05-22 | 2019-10-01 | 中国平安人寿保险股份有限公司 | 数据库操作的性能监控方法、装置、设备及存储介质 |
CN110874364A (zh) * | 2019-11-19 | 2020-03-10 | 北京启迪区块链科技发展有限公司 | 一种查询语句处理方法、装置、设备及存储介质 |
CN111078675A (zh) * | 2020-03-23 | 2020-04-28 | 绿漫科技有限公司 | 一种多维度的综合数据库sql审核及优化方法和系统 |
CN111159228A (zh) * | 2019-12-26 | 2020-05-15 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据查询方法和装置 |
CN111414382A (zh) * | 2019-01-07 | 2020-07-14 | 北京智融网络科技有限公司 | 一种基于MongoDB的慢SQL聚合展示方法和系统 |
CN111488378A (zh) * | 2020-04-10 | 2020-08-04 | 杭州趣维科技有限公司 | 一种基于Rewriter的MySQL数据库的查询优化方法 |
CN111597203A (zh) * | 2020-04-28 | 2020-08-28 | 中国银联股份有限公司 | 语句查询方法、装置、设备、介质 |
CN111723091A (zh) * | 2020-05-25 | 2020-09-29 | 中国建设银行股份有限公司 | 基于Oracle数据库的索引处理方法、系统、设备和存储介质 |
CN111881145A (zh) * | 2020-07-31 | 2020-11-03 | 北京致远互联软件股份有限公司 | 业务数据表的处理方法、装置、服务器及存储介质 |
CN112084211A (zh) * | 2020-10-12 | 2020-12-15 | 北京高因科技有限公司 | 一种慢sql语句处理系统 |
CN112765017A (zh) * | 2021-01-08 | 2021-05-07 | 中国工商银行股份有限公司 | 基于MySQL数据库的数据查询性能测试方法和装置 |
CN113282574A (zh) * | 2021-07-26 | 2021-08-20 | 云和恩墨(北京)信息技术有限公司 | 基于sql优化的数据库运行控制方法、系统及存储介质 |
CN113360357A (zh) * | 2021-06-01 | 2021-09-07 | 深圳前海微众银行股份有限公司 | 数据监控方法、系统、设备及计算机程序产品 |
CN113535773A (zh) * | 2021-07-27 | 2021-10-22 | 工银科技有限公司 | 数据库优化方法、数据库优化装置、电子设备和存储介质 |
CN113590647A (zh) * | 2021-07-29 | 2021-11-02 | 中国联合网络通信集团有限公司 | Sql语句优化方法、装置、设备、存储介质及产品 |
CN113849520A (zh) * | 2021-09-30 | 2021-12-28 | 平安科技(深圳)有限公司 | 异常sql的智能识别方法、装置、电子设备及存储介质 |
CN114238395A (zh) * | 2022-01-06 | 2022-03-25 | 税友软件集团股份有限公司 | 一种数据库优化方法、装置、电子设备及存储介质 |
CN114443691A (zh) * | 2022-01-18 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 数据库查询调优方法、系统及计算机设备 |
CN114996292A (zh) * | 2022-05-05 | 2022-09-02 | 北京联华信科技有限公司 | 执行计划自动变更方法、装置、设备及可读存储介质 |
CN113849520B (zh) * | 2021-09-30 | 2024-05-28 | 平安科技(深圳)有限公司 | 异常sql的智能识别方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070299814A1 (en) * | 2006-06-22 | 2007-12-27 | Barsness Eric L | Autonomic lock escalation in an sql environment |
CN106598862A (zh) * | 2016-12-19 | 2017-04-26 | 济南浪潮高新科技投资发展有限公司 | 一种基于sql语义可扩展的性能诊断调优方法 |
CN106682098A (zh) * | 2016-12-01 | 2017-05-17 | 无线生活(杭州)信息科技有限公司 | 一种dml处理方法及装置 |
CN106919678A (zh) * | 2017-02-27 | 2017-07-04 | 武汉珞佳伟业科技有限公司 | 一种数据库查询优化系统及方法 |
CN107480296A (zh) * | 2017-08-30 | 2017-12-15 | 杭州绿湾网络科技有限公司 | 基于sql的数据库性能分析方法和装置 |
CN107748782A (zh) * | 2017-10-20 | 2018-03-02 | 北京小度信息科技有限公司 | 查询语句处理方法及装置 |
-
2018
- 2018-03-14 CN CN201810209933.XA patent/CN108509530A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070299814A1 (en) * | 2006-06-22 | 2007-12-27 | Barsness Eric L | Autonomic lock escalation in an sql environment |
CN106682098A (zh) * | 2016-12-01 | 2017-05-17 | 无线生活(杭州)信息科技有限公司 | 一种dml处理方法及装置 |
CN106598862A (zh) * | 2016-12-19 | 2017-04-26 | 济南浪潮高新科技投资发展有限公司 | 一种基于sql语义可扩展的性能诊断调优方法 |
CN106919678A (zh) * | 2017-02-27 | 2017-07-04 | 武汉珞佳伟业科技有限公司 | 一种数据库查询优化系统及方法 |
CN107480296A (zh) * | 2017-08-30 | 2017-12-15 | 杭州绿湾网络科技有限公司 | 基于sql的数据库性能分析方法和装置 |
CN107748782A (zh) * | 2017-10-20 | 2018-03-02 | 北京小度信息科技有限公司 | 查询语句处理方法及装置 |
Non-Patent Citations (2)
Title |
---|
BRUCE128: "利用 force index优化sql语句性能", 《HTTPS://BLOG.CSDN.NET/BRUCE128/ARTICLE/DETAILS/46777567》 * |
JEROME_S: "MySQL慢查询优化 EXPLAIN详解", 《HTTPS://BLOG.CSDN.NET/JEROME_S/ARTICLE/DETAILS/52589860?UTM_SOURCE=BLOGKPCL2》 * |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111414382A (zh) * | 2019-01-07 | 2020-07-14 | 北京智融网络科技有限公司 | 一种基于MongoDB的慢SQL聚合展示方法和系统 |
CN109947828A (zh) * | 2019-03-15 | 2019-06-28 | 优信拍(北京)信息科技有限公司 | 一种处理报表数据的方法和装置 |
CN110297814A (zh) * | 2019-05-22 | 2019-10-01 | 中国平安人寿保险股份有限公司 | 数据库操作的性能监控方法、装置、设备及存储介质 |
CN110874364A (zh) * | 2019-11-19 | 2020-03-10 | 北京启迪区块链科技发展有限公司 | 一种查询语句处理方法、装置、设备及存储介质 |
CN111159228A (zh) * | 2019-12-26 | 2020-05-15 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据查询方法和装置 |
CN111078675A (zh) * | 2020-03-23 | 2020-04-28 | 绿漫科技有限公司 | 一种多维度的综合数据库sql审核及优化方法和系统 |
CN111488378A (zh) * | 2020-04-10 | 2020-08-04 | 杭州趣维科技有限公司 | 一种基于Rewriter的MySQL数据库的查询优化方法 |
CN111488378B (zh) * | 2020-04-10 | 2023-05-12 | 杭州小影创新科技股份有限公司 | 一种基于Rewriter的MySQL数据库的查询优化方法 |
CN111597203A (zh) * | 2020-04-28 | 2020-08-28 | 中国银联股份有限公司 | 语句查询方法、装置、设备、介质 |
CN111723091A (zh) * | 2020-05-25 | 2020-09-29 | 中国建设银行股份有限公司 | 基于Oracle数据库的索引处理方法、系统、设备和存储介质 |
CN111881145A (zh) * | 2020-07-31 | 2020-11-03 | 北京致远互联软件股份有限公司 | 业务数据表的处理方法、装置、服务器及存储介质 |
CN112084211A (zh) * | 2020-10-12 | 2020-12-15 | 北京高因科技有限公司 | 一种慢sql语句处理系统 |
CN112765017A (zh) * | 2021-01-08 | 2021-05-07 | 中国工商银行股份有限公司 | 基于MySQL数据库的数据查询性能测试方法和装置 |
CN113360357A (zh) * | 2021-06-01 | 2021-09-07 | 深圳前海微众银行股份有限公司 | 数据监控方法、系统、设备及计算机程序产品 |
CN113360357B (zh) * | 2021-06-01 | 2023-05-09 | 深圳前海微众银行股份有限公司 | 数据监控方法、系统及设备 |
CN113282574A (zh) * | 2021-07-26 | 2021-08-20 | 云和恩墨(北京)信息技术有限公司 | 基于sql优化的数据库运行控制方法、系统及存储介质 |
CN113282574B (zh) * | 2021-07-26 | 2021-10-22 | 云和恩墨(北京)信息技术有限公司 | 基于sql优化的数据库运行控制方法、系统及存储介质 |
CN113535773A (zh) * | 2021-07-27 | 2021-10-22 | 工银科技有限公司 | 数据库优化方法、数据库优化装置、电子设备和存储介质 |
CN113535773B (zh) * | 2021-07-27 | 2022-08-12 | 工银科技有限公司 | 数据库优化方法、数据库优化装置、电子设备和存储介质 |
CN113590647A (zh) * | 2021-07-29 | 2021-11-02 | 中国联合网络通信集团有限公司 | Sql语句优化方法、装置、设备、存储介质及产品 |
CN113590647B (zh) * | 2021-07-29 | 2024-02-23 | 中国联合网络通信集团有限公司 | Sql语句优化方法、装置、设备、存储介质及产品 |
CN113849520A (zh) * | 2021-09-30 | 2021-12-28 | 平安科技(深圳)有限公司 | 异常sql的智能识别方法、装置、电子设备及存储介质 |
CN113849520B (zh) * | 2021-09-30 | 2024-05-28 | 平安科技(深圳)有限公司 | 异常sql的智能识别方法、装置、电子设备及存储介质 |
CN114238395A (zh) * | 2022-01-06 | 2022-03-25 | 税友软件集团股份有限公司 | 一种数据库优化方法、装置、电子设备及存储介质 |
CN114443691A (zh) * | 2022-01-18 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 数据库查询调优方法、系统及计算机设备 |
CN114443691B (zh) * | 2022-01-18 | 2024-01-23 | 苏州浪潮智能科技有限公司 | 数据库查询调优方法、系统及计算机设备 |
CN114996292A (zh) * | 2022-05-05 | 2022-09-02 | 北京联华信科技有限公司 | 执行计划自动变更方法、装置、设备及可读存储介质 |
CN114996292B (zh) * | 2022-05-05 | 2023-07-25 | 北京联华信科技有限公司 | 执行计划自动变更方法、装置、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108509530A (zh) | 一种MySQL慢查询语句自动优化方法、计算机设备和存储介质 | |
CN104767813B (zh) | 基于openstack的公众行大数据服务平台 | |
US7930432B2 (en) | Systems and methods for distributing a workplan for data flow execution based on an arbitrary graph describing the desired data flow | |
CN107622103A (zh) | 管理数据查询 | |
EP1247165B1 (en) | System and method for transforming a relational database to a hierarchical database | |
CN110088749A (zh) | 自动本体生成 | |
CN106716416A (zh) | 数据检索装置、程序及记录介质 | |
CN107301205A (zh) | 一种大数据分布式实时查询方法及系统 | |
CN108536692A (zh) | 一种执行计划的生成方法、装置及数据库服务器 | |
CN108985981A (zh) | 数据处理系统及方法 | |
CN110119393A (zh) | 代码版本管理系统及方法 | |
CN110178128A (zh) | 使用优化的位图表示来管理大规模关联集 | |
CN106777027A (zh) | 大规模并行处理行列混合数据存储装置及存储、查询方法 | |
CN109977175A (zh) | 数据配置查询方法和装置 | |
Paredes V et al. | Efficient specification and solution of the even-aged rotation and thinning problem | |
Biplob et al. | Comparison of different extraction transformation and loading tools for data warehousing | |
CN115237937A (zh) | 一种基于星际文件系统的分布式协同查询处理系统 | |
CN108255852A (zh) | Sql执行方法及装置 | |
Yedilkhan et al. | Performance Analysis of Scaling NoSQL vs SQL: A Comparative Study of MongoDB, Cassandra, and PostgreSQL | |
CN109918391A (zh) | 一种流式事务处理方法及系统 | |
CN115114293A (zh) | 一种数据库索引的创建方法、相关装置、设备及存储介质 | |
CN109033196A (zh) | 一种分布式数据调度系统及方法 | |
CN107766545A (zh) | 一种科技数据的管理方法及装置 | |
Plodzien et al. | Static analysis of queries as a tool for static optimization | |
CN106971011A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180907 |