CN113282574A - 基于sql优化的数据库运行控制方法、系统及存储介质 - Google Patents
基于sql优化的数据库运行控制方法、系统及存储介质 Download PDFInfo
- Publication number
- CN113282574A CN113282574A CN202110841430.6A CN202110841430A CN113282574A CN 113282574 A CN113282574 A CN 113282574A CN 202110841430 A CN202110841430 A CN 202110841430A CN 113282574 A CN113282574 A CN 113282574A
- Authority
- CN
- China
- Prior art keywords
- sql
- preset
- database
- execution
- parameters
- 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
Links
Images
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/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
- G06F40/154—Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/253—Grammatical analysis; Style critique
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于SQL优化的数据库运行控制方法、系统及存储介质,基于SQL优化的数据库运行控制方法包括:接收并解析告警信息以得到告警目标机器,并获取告警目标机器的数据库的运行参数;若数据库的运行参数超过预设参数阈值,采集正在执行的SQL的执行参数和执行信息;根据执行参数、执行信息和预设筛选规则分析出造成故障的SQL以得到影响SQL;对影响SQL进行解析以得到第一解析数据,根据第一解析数据以预设改写规则对影响SQL改写以得到优化SQL;对优化SQL进行解析以得到第二解析数据,第二解析数据添加对应的索引。本发明无需数据库管理人员进行SQL优化,自动进行数据库故障分析,以自动查找到影响数据库故障的影响SQL,且提高了SQL优化的效率。
Description
技术领域
本发明涉及数据处理的技术领域,尤其是涉及一种基于SQL优化的数据库运行控制方法、系统及存储介质。
背景技术
随着移动互联网的蓬勃发展,企业需要进行大量业务数据处理,因此需要雇佣大量开发人员来开发各种业务系统,但是对于开发人员而言只熟悉程序语言,对于数据库的了解很少,且多数的数据库的SQL语句性能调优也是参差不齐,所以数据库经常出现由于开发人员编写低性能的SQL导致数据库死机,进而导致业务系统响应缓慢。
相关技术中,数据库通常采用MySQL数据库,且MySQL数据库由于体积小、速度快、总体拥有成本低,但是由于MySQL对于表连接的算法只是简单的支持嵌套JOIN,如果出现JOIN条件缺少索引、where条件确少索引则会出现严重的性能下降,造成整个服务器负载升高、造成业务系统响应时间变长或者整个业务系统出现中断。因此,相关人员采用DBA手动添加索引、停止业务系统,等待DBA和开发人员优化SQL后再恢复业务系统,但是由于人工参与无法准确预测优化SQL的时间,导致业务系统无法快速恢复正常使用。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种基于SQL优化的数据库运行控制方法,能够自动进行SQL优化,节省人力,且提高业务系统恢复的效率。
本发明还提出一种基于SQL优化的数据库运行控制系统。
本发明还提出一种计算机可读存储介质。
第一方面,本发明的一个实施例提供了基于SQL优化的数据库运行控制方法,包括:
接收并解析告警信息以得到告警目标机器,并获取所述告警目标机器的数据库的运行参数;
若所述数据库的所述运行参数超过预设参数阈值,采集正在执行的SQL的执行参数和执行信息;
根据所述执行参数、所述执行信息和预设筛选规则分析出造成故障的SQL以得到影响SQL;
对所述影响SQL进行解析以得到第一解析数据,根据所述第一解析数据以预设改写规则对所述影响SQL改写以得到优化SQL;
对优化SQL进行解析以得到第二解析数据,向所述第二解析数据添加对应的索引。
本发明实施例的基于SQL优化的数据库运行控制方法至少具有如下有益效果:当检测数据库存在故障隐患时,获取导致数据库故障的影响SQL,然后解析影响SQL后删除条件,并得到优化SQL自动确定索引,因此在检测数据库故障时,对SQL进行自动优化,无需数据库管理人员进行SQL优化,则数据库管理人员可以解脱出来投入更多精力参与业务系统的分析和技能提升,且自动进行数据库故障分析,以自动查找到导致数据库故障的影响SQL,以节省数据库人员自动排查的时间,且提高了SQL优化的效率。
根据本发明的另一些实施例的基于SQL优化的数据库运行控制方法,所述运行参数包括:CPU占用率、响应时间;所述预设参数阈值包括预设占用率阈值、预设时间阈值。
根据本发明的另一些实施例的基于SQL优化的数据库运行控制方法,所述若所述数据库的所述运行参数超过预设参数阈值,采集正在执行的SQL的执行参数和执行信息,包括:
若所述数据库的所述CPU占用率超过预设占用率阈值、和/或所述数据库的所述响应时间超过所述预设时间阈值,采集正在执行的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是本发明实施例中基于SQL优化的数据库运行控制方法的一具体实施例流程示意图;
图2是本发明实施例中基于SQL优化的数据库运行控制方法的另一具体实施例流程示意图;
图3是本发明实施例中基于SQL优化的数据库运行控制方法的另一具体实施例流程示意图;
图4是本发明实施例中基于SQL优化的数据库运行控制方法的另一具体实施例流程示意图;
图5是本发明实施例中基于SQL优化的数据库运行控制方法的另一具体实施例流程示意图;
图6是本发明实施例中基于SQL优化的数据库运行控制方法的另一具体实施例流程示意图;
图7是本发明实施例中基于SQL优化的数据库运行控制方法的中抽象语法树的示意图;
图8是本发明实施例中基于SQL优化的数据库运行控制方法的另一具体实施例流程示意图;
图9是本发明实施例中基于SQL优化的数据库运行控制系统的一具体实施例模块框图。
附图标记:100、处理器;200、存储器。
具体实施方式
以下将结合实施例对本发明的构思及产生的技术效果进行清楚、完整地描述,以充分地理解本发明的目的、特征和效果。显然,所描述的实施例只是本发明的一部分实施例,而不是全部实施例,基于本发明的实施例,本领域的技术人员在不付出创造性劳动的前提下所获得的其他实施例,均属于本发明保护的范围。
在本发明的描述中,如果涉及到方位描述,例如“上”、“下”、“前”、“后”、“左”、“右”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。如果某一特征被称为“设置”、“固定”、“连接”、“安装”在另一个特征,它可以直接设置、固定、连接在另一个特征上,也可以间接地设置、固定、连接、安装在另一个特征上。
在本发明实施例的描述中,如果涉及到“若干”,其含义是一个以上,如果涉及到“多个”,其含义是两个以上,如果涉及到“大于”、“小于”、“超过”,均应理解为不包括本数,如果涉及到“以上”、“以下”、“以内”,均应理解为包括本数。如果涉及到“第一”、“第二”,应当理解为用于区分技术特征,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
由于互联网时代的发展,越来越多的企业采用业务系统来进行业务处理和数据分析,因此对于业务系统的开发则需要大量的开发人员,但是开发人员往往只对程序语言比较熟悉,对于数据库的了解较少,且多数的数据库的SQL语句性能调优也是参差不齐的,数据库经常出现由于开发人员编写低性能SQL造成数据库死机,从而导致业务系统响应缓慢甚至中断。
一般数据库为MySQL数据库,且MySQL数据库具有体积小、速度快、总体拥有成本低,开源等优点,因此MySQL数据库被广泛应用于各种OLTP类型的业务中,但是由于MySQL数据库对于表连接的算法只支持嵌套JION,如果出现JION条件缺少索引,where条件缺少索引则会出现严重的性能下降,造成整个服务器负载升高,造成业务相应时间变长或者整个业务系统出现中断。针对MySQL数据库所存在的问题,大部分企业采用的解决手段则是依赖DBA手动添加索引,停止业务系统等待DBA和开发人员优化SQL后再恢复业务系统,因此导致业务系统无法快速恢复业务系统,降低了用户使用的体验感。
基于此,本申请公开了一种基于SQL优化的数据库运行控制方法,能够在MySQL数据库出现故障时自动优化SQL,将基本繁琐的故障排查任务自动化,并将DBA人员解脱出来投入更多精力参与业务系统的分析和技能提升,从而提高用户使用业务系统的体验感。
需要说明:
SQL(Structured Query Language:结构化查询语言)是用于管理关系数据库管理系统(RDBMS)。SQL的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下公司。MySQL最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一。
DBA也称数据库管理员(Database Administrator,简称DBA),是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,他属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。
join()方法用于把数组中的所有元素放入一个字符串,元素是通过指定的分隔符进行分隔的。
第一方面,参照图1,本发明实施例公开了一种基于SQL优化的数据库运行控制方法,包括但不限于以下步骤:
S100、接收并解析告警信息以得到告警目标机器,并获取告警目标机器的数据库的运行参数;
S200、若数据库的运行参数超过预设参数阈值,采集正在执行的SQL的执行参数和执行信息;
S300、根据执行参数、执行信息和预设筛选规则分析出造成故障的SQL以得到影响SQL;
S400、对影响SQL进行解析以得到第一解析数据,根据第一解析数据以预设改写规则对影响SQL改写以得到优化SQL;
S500、对优化SQL进行解析以得到第二解析数据,向第二解析数据添加对应的索引。
由于MySQL数据库对于出现的条件缺少索引,容易导致业务系统中断或关闭,所以接收到告警信息后,通过对告警信息进行解析以确定告警信息对应的告警目标机器,然后通过监控告警目标机器的数据库的运行参数。若运行参数超过预设参数阈值,则表示数据库的负载过高存在死机的隐患。因此采集正在执行的SQL的执行参数和执行信息,然后根据预设筛选规则将正在执行的SQL进行筛选以确定造成数据库故障的SQL以得到影响SQL,确定了影响SQL后对影响SQL进行解析以得到第一解析数据,因此根据解析的第一解析数据以预设改写规则去除第一解析数据中的条件以得到改写后的优化SQL,然后对优化SQL再进行解析以得到第二解析数据,并根据第二解析数据确定对应的索引。因此当检测数据库存在故障隐患时,获取导致数据库故障的影响SQL,然后解析影响SQL后删除条件,并得到优化SQL自动确定索引,因此在检测数据库故障时,对SQL进行自动优化,无需数据库管理人员进行SQL优化,则数据库管理人员可以解脱出来投入更多精力参与业务系统的分析和技能提升,且自动进行数据库故障分析,以自动查找到导致数据库故障的影响SQL,以节省数据库人员自动排查的时间,且提高了SQL优化的效率。
具体地,告警信息的来源可以为zabbix系统、其他告警系统,其中,zabbix([`zæbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。通过zabbix系统对服务器进行监控,若存在故障情况则接收来自zabbix系统的告警信息。在本实施例中接收来自zabbix系统发送的告警信息,其他实施例可以采用其他告警信息对服务器进行故障监控以接收来自其他告警系统发送的告警信息。通过对告警信息进行解析以得到告警类型和告警目标机器,则可以对告警目标机器的数据库的运行参数采集,以根据运行参数和预设参数阈值来判断告警目标机器的数据库是否存在故障。
在一些实施例中,运行参数包括:CPU占用率、响应时间;预设参数阈值包括预设占用率阈值、预设时间阈值。
当解析告警信息确定告警目标机器后,对告警目标机器的数据库的CPU占用率和响应时间采集,且数据库的CPU占用率和响应时间最能表示数据库的性能。因此,根据数据库的CPU占用率、响应时间和预设占用率阈值、预设时间阈值来判断数据库的性能是否故障,若检测数据库存在故障隐患则采集正在执行的SQL的执行参数和执行信息。
参照图2,其中,步骤S200包括但不限于以下步骤:
S210、若数据库的CPU占用率超过预设占用率阈值、和/或数据库的响应时间超过预设时间阈值,采集正在执行的SQL的执行参数和执行信息。
通过数据库的CPU占用率超过预设占用率阈值、和/或数据库的响应时间超过预设时间阈值以判断数据库存在性能故障,因此判断数据库存在性能故障后则获取正在运行的SQL的执行参数和执行信息,以判断正在执行的SQL哪一个导致数据库故障。因此,通过判断数据库的CPU占用率和响应时间确定数据库是否故障,实现自动进行数据库故障监测。
参照图3,在一些实施例中,预设筛选规则包括:预设筛选参数和预设筛选条件。步骤S300包括但不限于以下步骤:
S310、根据执行信息以预设筛选条件筛选以得到多个预处理SQL;
S320、获取多个预处理SQL的执行参数与预设筛选参数之间差值最大的SQL为影响SQL。
获取正在执行SQL的执行参数和执行信息,由于正在执行的SQL存在多个所以需要筛选出造成数据库故障的SQL,因此根据多个预处理SQL的执行信息以预设筛选条件筛选出符合预设筛选条件的SQL,由于符合预设筛选条件的SQL也存在多个,因此需要进一步对多个预处理SQL进行筛选。通过计算多个预处理SQL的执行参数和预设筛选参数的差值,以获取差值最大的SQL以确定该SQL为导致数据库故障的影响SQL。因此通过对多个预处理SQL的执行信息以预设筛选条件筛选后,再通过执行参数和预设筛选参数进一步确定影响SQL,以实现精确查找到影响数据库故障的影响SQL。
参照图4,在一些实施例中,SQL的执行信息包括:表的扫描行数、索引使用状况、全表扫描的存在状态、查询返回行数。
步骤S310包括但不限于以下步骤:
S311、获取表的扫描行数大于预设第一行数、和/或索引使用状况为使用、和/或全表扫描的存在状态为存在、和/或查询返回行数大于预设第二行数的SQL以得到多个预处理SQL。
其中预设筛选条件即为表的扫描行数大于预设第一行数、和/或索引使用状况为使用、和/或全表扫描的存在状态为存在、和/或查询返还行数大于预设第二行数。因此根据预设筛选条件筛选出执行信息满足预设筛选条件的SQL,以得到多个预处理SQL,因此可以大概率地筛选出影响数据库故障的SQL。
在一些实施例中,执行参数包括:执行时间、执行时长、执行次数,预设筛选参数包括:预设时间阈值、预设时长阈值、预设次数。
参照图5,步骤S320包括但不限于以下步骤:
S321、获取多个预处理SQL的执行时间和预设时间阈值的差值以得第一差值;
S322、获取多个预处理SQL的执行时长和预设时长阈值的差值以得到第二差值;
S323、获取多个预处理SQL的执行次数和预设次数的差值以得到第三差值;
S324、获取多个预处理SQL中第一差值、第二差值与第三差值之和最大的SQL为影响SQL。
根据执行信息和预设筛选条件筛选出符合预设筛选条件的多个预处理SQL后,完成预处理SQL的初步筛选后,再通过对预处理SQL的执行时间、执行时长和执行次数进行判断,以获取执行时间、执行时长和执行次数最为异常的SQL,以得到大概率造成数据库故障的影响SQL。因此通过计算第一差值、第二差值和第三差值之和确定最为异常的SQL以得到影响SQL,以自动且准确地查找出影响数据库故障的影响SQL,无需人工排查,节省数据库管理人员的SQL排查,提高了影响SQL查找的效率和准确性。
例如,若通过预设筛选条件筛选得到1-SQL、2-SQL和3-SQL,若1-SQL的执行时间和预设时间阈值的第一差值为a1、执行时长和预设时长阈值的第二差值为a2,执行次数和预设次数的第三差值为a3;2-SQL的执行时间和预设时间阈值的第一差值为b1、执行时长和预设时长阈值的第二差值为b2,执行次数和预设次数的第三差值为c3;3-SQL的执行时间和预设时间阈值的第一差值为c1、执行时长和预设时长阈值的第二差值为c2,执行次数和预设次数的第三差值为c3。若a1+a2+a3<b1+b2+b3>c1+c2+c3,则确定2-SQL为导致数据库故障的影响SQL,因此可以快速查找出大概率导致数据库故障的影响SQL。
参照图6,在一些实施例中,步骤S400包括:
S410、对影响SQL进行词法解析以得到词法解析数据;
S420、对词法解析数据转换为抽象语法树,并对抽象语法树进行语法解析以得到第一解析数据;
S430、根据预设改写规则将第一解析数据中的函数列过滤条件、表达式列过滤条件和不等于过滤条件去除以得到优化SQL。
由于数据库故障主要因为JOIN条件缺少索引,where条件缺少索引导致数据库性能下降,造成业务系统存在终端隐患。因此通过对影响SQL进行词法解析以得到词法解析数据,其中词法解析主要用于将SQL拆解成不可再分的原子符号,并根据数据库提供的数据字典将SQL拆分成关键词、表达式、字母量和操作符,然后再使用语法解析将词法解析数据转换为抽象语法树,且转换为抽象语法树后即可根据抽象语法树确定SQL使用的表、过滤条件使用的列、SQL中关联条件使用的列、关联条件的操作符、过滤条件的操作符、过滤值以得到第一解析数据。因此需要进行SQL改写前需要解析到第一解析数据,由于第一解析数据为SQL使用的表、过滤条件使用的列、SQL中关联条件使用的列、关联条件的操作符、过滤条件的操作符、过滤值,因此根据第一解析数据去掉函数列过滤条件、表达式过滤条件和不等于过滤条件,且将去掉各种过滤条件的第一解析数据以得到优化SQL,因此去除第一解析数据中会影响数据库性能的过滤条件,则可以根据优化SQL再确定对应的索引,以恢复数据库的正常运行,从而稳定业务系统运行。
例如,假设对影响SQL进行词法解析后得到词法解析数据,然后根据词法解析数据转换成抽象语法树,且抽象语法树如图7所示,若根据抽象语法数据得到的第一解析数据如:SELECT id, name,login_time FROM t_user WHERE status = 'ACTIVE' AND age >18 AND date(login_time)>'2020-10-01' AND 1=1。那么需要对SQL进行改写,则是去掉函数列过滤条件、表达式列过滤条件和不等于过滤条件,则改写得到的数据如下:SELECT id,name,login_time FROM t_user WHERE status = 'ACTIVE' AND age > 18。因此对于SQL改写操作自动化,无需数据库管理人员进行SQL优化操作,使得SQL优化操作更加高效。
参照图8,在一些实施例中,步骤S500包括但不限于以下步骤:
S510、解析优化SQL使用的表、过滤条件使用的列、关联条件使用的列、关联操作符、过滤操作符以得到第二解析数据;
S520、采集第二解析数据中表的行数、列的索引基数以得到统计信息;
S530、根据优化SQL的过滤条件和统计信息对索引基数高的列添加索引。
由于第一解析数据去掉各个过滤条件得到优化SQL,然后再对优化SQL进行解析,以解析优化SQL使用的表、过滤条件使用的列、关联条件使用的列、关联操作符、过滤操作符,也即去除过滤条件的第一解析数据以得到第二解析数据。然后根据第二解析数据对表的行数、列的索引基数进行采集以得到统计信息,则可以根据统计信息和优化SQL的过滤条件对索引基数高的列添加索引,以实现自动给索引优化信息并自动执行添加索引,无需停止业务系统后等待数据库管理人员和开发人员优化SQL再恢复业务系统,则业务系统可以快速恢复正常运行,节省数据库管理人员和开发人员的人力,且提高数据库的稳定性,进而提高业务系统的稳定性。
其中,对索引基数高的列添加索引,若出现多列在同一个表上,则按照等操作符的列在前,其他比较操作符在后的顺序创建联合索引。因此实现自动给出索引优化信息并自动执行添加索引,提高业务系统运行的稳定性、数据库的治愈效率。
下面参考图1至图8以一个具体的实施例详细描述根据本发明实施例的基于SQL优化的数据库运行控制方法。值得理解的是,下述描述仅是示例性说明,而不是对发明的具体限制。
接收来自zabbix系统发送的告警信息,对告警信息进行解析以得到告警类型和告警目标机器,采集告警目标机器的数据库的CPU占用率和响应时间,数据库的CPU占用率超过预设占用率阈值、和/或数据库的响应时间超过预设时间阈值以判断数据库存在性能故障,获取正在运行的SQL的执行参数和执行信息。获取多个预处理SQL中表的扫描行数大于预设第一行数、和/或索引使用状况为使用、和/或全表扫描的存在状态为存在、和/或查询返回行数大于预设第二行数的SQL以得到多个预处理SQL,再通过对预处理SQL的执行时间、执行时长和执行次数进行判断,以获取执行时间、执行时长和执行次数最为异常的SQL,以得到大概率造成数据库故障的影响SQL。通过对影响SQL进行词法解析以得到词法解析数据,再使用语法解析将词法解析数据转换为抽象语法树,且转换为抽象语法树后即可根据抽象语法树确定SQL使用的表、过滤条件使用的列、SQL中关联条件使用的列、关联条件的操作符、过滤条件的操作符、过滤值以得到第一解析数据,将第一解析数据去掉函数列过滤条件、表达式过滤条件和不等于过滤条件以得到优化SQL。再对优化SQL进行解析,以解析优化SQL使用的表、过滤条件使用的列、关联条件使用的列、关联操作符、过滤操作符以得到第二解析数据,根据第二解析数据对表的行数、列的索引基数进行采集以得到统计信息,根据统计信息和优化SQL的过滤条件对索引基数高的列添加索引。因此实现了自动查询影响SQL,并自动优化影响SQL以得到优化SQL,则节省数据库管理人员和开发人员的人力,且提高数据库的稳定性,进而提高业务系统的稳定性。
第二方面,参照图9,本发明实施例还公开了一种基于SQL优化的数据库运行控制系统,包括:至少一个处理器100,以及,与所述至少一个处理器100通信连接的存储器200;其中,所述存储器200存储有可被所述至少一个处理器100执行的指令,所述指令被所述至少一个处理器100执行,以使所述至少一个处理器100能够执行如第一方面的基于SQL优化的数据库运行控制方法。
第三方面,本发明实施例公开了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面所述的基于SQL优化的数据库运行控制方法。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。此外,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
Claims (10)
1.一种基于SQL优化的数据库运行控制方法,其特征在于,包括:
接收并解析告警信息以得到告警目标机器,并获取所述告警目标机器的数据库的运行参数;
若所述数据库的所述运行参数超过预设参数阈值,采集正在执行的SQL的执行参数和执行信息;
根据所述执行参数、所述执行信息和预设筛选规则分析出造成故障的SQL以得到影响SQL;
对所述影响SQL进行解析以得到第一解析数据,根据所述第一解析数据以预设改写规则对所述影响SQL改写以得到优化SQL;
对优化SQL进行解析以得到第二解析数据,向所述第二解析数据添加对应的索引。
2.根据权利要求1所述的基于SQL优化的数据库运行控制方法,其特征在于,所述运行参数包括:CPU占用率、响应时间;所述预设参数阈值包括:预设占用率阈值、预设时间阈值。
3.根据权利要求2所述的基于SQL优化的数据库运行控制方法,其特征在于,所述若所述数据库的所述运行参数超过预设参数阈值,采集正在执行的SQL的执行参数和执行信息,包括:
若所述数据库的所述CPU占用率超过预设占用率阈值、和/或所述数据库的所述响应时间超过所述预设时间阈值,采集正在执行的SQL的所述执行参数和所述执行信息。
4.根据权利要求1所述的基于SQL优化的数据库运行控制方法,其特征在于,预设筛选规则包括:预设筛选参数和预设筛选条件;所述根据所述执行参数、执行信息和预设筛选规则分析出造成故障的SQL以得到影响SQL,包括:
根据所述执行信息以所述预设筛选条件筛选以得到多个预处理SQL;
获取所述多个预处理SQL的所述执行参数与所述预设筛选参数之间差值最大的所述SQL为所述影响SQL。
5.根据权利要求4所述的基于SQL优化的数据库运行控制方法,其特征在于,所述执行信息包括:表的扫描行数、索引使用状况、全表扫描的存在状态、查询返回行数,所述根据所述执行信息以所述预设筛选条件筛选以得到多个预处理SQL,包括:
获取所述表的扫描行数大于预设第一行数、和/或所述索引使用状况为使用、和/或所述全表扫描的存在状态为存在、和/或所述查询返回行数大于预设第二行数的SQL以得到多个预处理SQL。
6.根据权利要求4所述的基于SQL优化的数据库运行控制方法,其特征在于,所述执行参数包括:执行时间、执行时长、执行次数,所述预设筛选参数包括:预设时间阈值、预设时长阈值、预设次数,所述获取所述多个预处理SQL的所述执行参数与所述预设筛选参数之间差值最大的所述SQL为所述影响SQL,包括:
获取所述多个预处理SQL的所述执行时间和所述预设时间阈值的差值以得第一差值;
获取所述多个预处理SQL的所述执行时长和所述预设时长阈值的差值以得到第二差值;
获取所述多个预处理SQL的所述执行次数和所述预设次数的差值以得到第三差值;
获取所述多个预处理SQL中所述第一差值、所述第二差值与所述第三差值之和最大的所述SQL为所述影响SQL。
7.根据权利要求1至6任一项所述的基于SQL优化的数据库运行控制方法,其特征在于,所述对所述影响SQL进行解析以得到第一解析数据,根据所述第一解析数据以预设改写规则对所述影响SQL改写以得到优化SQL,包括:
对所述影响SQL进行词法解析以得到词法解析数据;
对所述词法解析数据转换为抽象语法树,并对所述抽象语法树进行语法解析以得到所述第一解析数据;
根据所述预设改写规则将所述第一解析数据中的函数列过滤条件、表达式列过滤条件和不等于过滤条件去除以得到所述优化SQL。
8.根据权利要求1至6任一项所述的基于SQL优化的数据库运行控制方法,其特征在于,所述对优化SQL进行解析以得到第二解析数据,向所述第二解析数据添加对应的索引,包括:
解析所述优化SQL使用的表、过滤条件使用的列、关联条件使用的列、关联操作符、过滤操作符以得到所述第二解析数据;
采集所述第二解析数据中表的行数、列的索引基数以得到统计信息;
根据所述优化SQL的过滤条件和所述统计信息对索引基数高的列添加索引。
9.一种基于SQL优化的数据库运行控制系统,包括:
至少一个处理器,以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至8任一项所述的基于SQL优化的数据库运行控制方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1至8任一项所述的基于SQL优化的数据库运行控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110841430.6A CN113282574B (zh) | 2021-07-26 | 2021-07-26 | 基于sql优化的数据库运行控制方法、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110841430.6A CN113282574B (zh) | 2021-07-26 | 2021-07-26 | 基于sql优化的数据库运行控制方法、系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113282574A true CN113282574A (zh) | 2021-08-20 |
CN113282574B CN113282574B (zh) | 2021-10-22 |
Family
ID=77287253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110841430.6A Active CN113282574B (zh) | 2021-07-26 | 2021-07-26 | 基于sql优化的数据库运行控制方法、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113282574B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114428789A (zh) * | 2022-04-06 | 2022-05-03 | 中国工商银行股份有限公司 | 数据的处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050125427A1 (en) * | 2003-09-06 | 2005-06-09 | Oracle International Corporation | Automatic SQL tuning advisor |
CN106598862A (zh) * | 2016-12-19 | 2017-04-26 | 济南浪潮高新科技投资发展有限公司 | 一种基于sql语义可扩展的性能诊断调优方法 |
CN108509530A (zh) * | 2018-03-14 | 2018-09-07 | 武汉斗鱼网络科技有限公司 | 一种MySQL慢查询语句自动优化方法、计算机设备和存储介质 |
CN111241059A (zh) * | 2020-01-07 | 2020-06-05 | 广州虎牙科技有限公司 | 一种基于数据库的数据库优化方法及装置 |
-
2021
- 2021-07-26 CN CN202110841430.6A patent/CN113282574B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050125427A1 (en) * | 2003-09-06 | 2005-06-09 | Oracle International Corporation | Automatic SQL tuning advisor |
CN106598862A (zh) * | 2016-12-19 | 2017-04-26 | 济南浪潮高新科技投资发展有限公司 | 一种基于sql语义可扩展的性能诊断调优方法 |
CN108509530A (zh) * | 2018-03-14 | 2018-09-07 | 武汉斗鱼网络科技有限公司 | 一种MySQL慢查询语句自动优化方法、计算机设备和存储介质 |
CN111241059A (zh) * | 2020-01-07 | 2020-06-05 | 广州虎牙科技有限公司 | 一种基于数据库的数据库优化方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114428789A (zh) * | 2022-04-06 | 2022-05-03 | 中国工商银行股份有限公司 | 数据的处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113282574B (zh) | 2021-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102033971B1 (ko) | 데이터 품질 분석 | |
CN112395325A (zh) | 一种数据治理方法、系统、终端设备及存储介质 | |
US11385898B2 (en) | Task orchestration method for data processing, orchestrator, device and readable storage medium | |
US11487742B2 (en) | Consistency checks between database systems | |
CN113282574B (zh) | 基于sql优化的数据库运行控制方法、系统及存储介质 | |
CN107239269A (zh) | 一种软件增量升级方法、装置和运营支撑系统 | |
CN111221890B (zh) | 通用指标类自动监控预警方法及装置 | |
CN115408370A (zh) | 数据库迁移评估方法和系统、计算机设备、存储介质 | |
CN111723091A (zh) | 基于Oracle数据库的索引处理方法、系统、设备和存储介质 | |
CN110795614A (zh) | 一种索引自动优化方法及装置 | |
US5826104A (en) | Batch program status via tape data set information for dynamically determining the real time status of a batch program running in a main frame computer system | |
CN110968569B (zh) | 数据库的管理方法、数据库的管理装置及存储介质 | |
US11184220B2 (en) | Automated remediation of information technology events | |
US11838171B2 (en) | Proactive network application problem log analyzer | |
CN112131090B (zh) | 业务系统性能监控方法及装置、设备及介质 | |
CN115310011A (zh) | 页面展示方法、系统以及可读存储介质 | |
US20220284045A1 (en) | Matching machine generated data entries to pattern clusters | |
CN111352818B (zh) | 应用程序性能分析方法、装置、存储介质及电子设备 | |
EP3951600B1 (en) | Method and system for managing performance for use cases in software applications | |
CN113626423B (zh) | 业务数据库的日志管理方法、装置、系统 | |
CN115686583B (zh) | 海量物联网设备升级方法、装置、电子设备和存储介质 | |
CN111953544B (zh) | 一种服务器的故障检测方法、装置、设备及存储介质 | |
CN117149234A (zh) | 数据库升级方法和装置 | |
CN117271183A (zh) | 数据库异常作业调度重试策略的获取方法及其装置 | |
CN117827519A (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 |