CN118152354A - 慢查询日志处理方法、装置、计算机设备及存储介质 - Google Patents
慢查询日志处理方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN118152354A CN118152354A CN202410308888.9A CN202410308888A CN118152354A CN 118152354 A CN118152354 A CN 118152354A CN 202410308888 A CN202410308888 A CN 202410308888A CN 118152354 A CN118152354 A CN 118152354A
- Authority
- CN
- China
- Prior art keywords
- slow query
- log
- slow
- statement
- information
- 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
- 238000003672 processing method Methods 0.000 title claims description 19
- 238000012545 processing Methods 0.000 claims abstract description 101
- 238000000034 method Methods 0.000 claims abstract description 73
- 238000004458 analytical method Methods 0.000 claims abstract description 35
- 230000005856 abnormality Effects 0.000 claims abstract description 23
- 230000002159 abnormal effect Effects 0.000 claims abstract description 22
- 230000008569 process Effects 0.000 claims description 26
- 238000006243 chemical reaction Methods 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 10
- 238000007726 management method Methods 0.000 description 10
- 238000001914 filtration Methods 0.000 description 8
- 238000005457 optimization Methods 0.000 description 7
- 238000012360 testing method Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012550 audit Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 230000002547 anomalous effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000002896 database filtering Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- KDYFGRWQOYBRFD-UHFFFAOYSA-N succinic acid Chemical compound OC(=O)CCC(O)=O KDYFGRWQOYBRFD-UHFFFAOYSA-N 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
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/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- 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/2282—Tablespace storage structures; Management thereof
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种慢查询日志处理方法、装置、计算机设备及存储介质,涉及计算机技术领域。该方法包括:获取预设关系型数据库的慢查询日志;对所述慢查询日志中的慢查询语句进行结构化处理,生成结构化语句;根据所述慢查询日志中的其他日志信息和所述结构化语句,生成慢查询信息;若所述预设关系型数据库异常,根据所述慢查询信息对所述预设关系型数据库进行异常原因分析。本申请可以实现对慢查询日志的高效管理,及时定位问题语句并提高数据库的故障处理效率。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种慢查询日志处理方法、装置、计算机设备及存储介质。
背景技术
关系型数据库管理系统将“一对一、一对多、多对多”等关系模型联系组成起来,将多个业务系统的关键数据存储在关系型数据库中,保证关系型数据库的正常运行和保持对外提供的业务稳定是数据库管理人员的基础工作。
通常情况下,数据库管理人员会日常巡检关系型数据库的慢查询日志进行系统分析,当关系型数据库出现故障时,数据库管理人员需要在大量的慢查询日志中对问题语句进行定位。
但是,在业务系统的业务繁多的情况下,数据库管理人员对问题语句的定位是十分困难的,导致处理故障的时间线被拉长,降低了故障处理效率。
发明内容
本发明的目的在于,针对上述现有技术中的不足,提供一种慢查询日志处理方法、装置、计算机设备及存储介质,以便实现对慢查询日志的高效管理,及时定位问题语句并提高数据库的故障处理效率。
为实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供了一种慢查询日志处理方法,所述方法包括:
获取预设关系型数据库的慢查询日志;
对所述慢查询日志中的慢查询语句进行结构化处理,生成结构化语句;
根据所述慢查询日志中的其他日志信息和所述结构化语句,生成慢查询信息;
若所述预设关系型数据库异常,根据所述慢查询信息对所述预设关系型数据库进行异常原因分析。
第二方面,本申请实施例还提供了一种慢查询日志处理装置,所述装置包括:
日志获取模块,用于获取预设关系型数据库的慢查询日志;
结构化处理模块,用于对所述慢查询日志中的慢查询语句进行结构化处理,生成结构化语句;
慢查询信息生成模块,用于根据所述慢查询日志中的其他日志信息和所述结构化语句,生成慢查询信息;
异常分析模块,用于若所述预设关系型数据库异常,根据所述慢查询信息对所述预设关系型数据库进行异常原因分析。
第三方面,本申请实施例还提供了一种计算机设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的程序指令,当计算机设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述程序指令,以执行如第一方面任一项所述的慢查询日志处理方法的步骤。
第四方面,本申请实施例还提供一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一方面任一项所述的慢查询日志处理方法的步骤。
本申请的有益效果是:
本申请提供的慢查询日志处理方法、装置、计算机设备及存储介质,通过对预设关系型数据库的慢查询日志中的慢查询语句进行结构化处理,生成结构化语句,根据慢查询日志中的其他日志信息和结构化语句,生成慢查询信息,在预设关系型数据库发生异常时,根据慢查询信息对预设关系型数据库进行异常异常原因分析,确定引起异常的结构化语句,以便可以通过对引起异常的结构化语句进行优化,实现对慢查询日志的高效管理,及时定位问题语句并提高数据库的故障处理效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的业务系统与关系型数据库的架构图;
图2为本申请实施例提供的慢查询日志处理方法的流程示意图一;
图3为本申请实施例提供的慢查询日志处理方法的流程示意图二;
图4为本申请实施例提供的慢查询日志采集流程框图;
图5为本申请实施例提供的格式统一化处理的框图;
图6为本申请实施例提供的慢查询日志处理方法的流程示意图三;
图7为本申请实施例提供的慢查询日志处理方法的流程示意图四;
图8为本申请实施例提供的慢查询日志处理方法的流程示意图五;
图9为本申请实施例提供的慢查询日志处理装置的结构示意图;
图10为本申请实施例提供的计算机设备的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
此外,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在不冲突的情况下,本申请的实施例中的特征可以相互结合。
请参考图1,为本申请实施例提供的业务系统与关系型数据库的架构图,如图1所示,业务服务器作为业务请求入口用于接收业务请求,业务服务器与至少两个应用机器通信连接,以将业务请求分发至应用机器,应用机器上部署有实现业务逻辑的业务系统,至少两个应用机器可以分担业务压力,且可以根据业务流量的增减对应增减应用机器的数量,至少两个应用机器与关系型数据库连接。
关系型数据库由两个服务器数据库da和dp构成,并且通过配置将两个数据库均设置为主数据库,每个主数据库都可以处理读写请求,且两个主数据库互为主从关系,实现数据库的实时同步。
应用机器上的数据库连接地址是虚拟IP(Virtual Internet Protocol,VIP)地址,该VIP地址是业务系统访问数据库的入口。
通常情况下,一台主数据库连接VIP,负责接收线上读写请求,当该主数据库发生故障时,另一个主数据库检测到该主数据库不可用,会进行VIP漂移操作,将VIP地址从故障的主数据库切换到另一个主数据库,保证线上环境的可用性和数据库的一致性。
数据库在运行过程中,数据库执行结构化查询语句(Structured QueryLanguage)的时候,将执行时间超过阈值的SQL语句定义为慢查询语句,并将慢查询语句打印至慢查询日志中。
慢查询语句会使系统长时间耗费资源,给整个系统造成压力,随着慢查询语句的增加,会对系统造成巨大的影响。
为此,本申请拟提供一种慢查询日志处理方法、装置、计算机设备及存储介质,通过对预设关系型数据库的慢查询日志中的慢查询语句进行结构化处理,生成结构化语句,根据慢查询日志中的其他日志信息和结构化语句,生成慢查询信息,在预设关系型数据库发生异常时,根据慢查询信息对预设关系型数据库进行异常异常原因分析,确定引起异常的结构化语句,以便可以通过对引起异常的结构化语句进行优化,实现对慢查询日志的高效管理,及时定位问题语句并提高数据库的故障处理效率。
在对本申请所提供的慢查询日志处理方法的具体实现方式进行说明之前,先对本申请的慢查询日志处理方法所应用的慢查询日志处理系统进行说明。
慢查询日志处理系统与预设关系型数据库、预设慢查询数据库分别通信连接,慢查询日志处理系统用于从预设关系型数据库中获取慢查询日志,并将慢查询日志进行格式转换、序列化处理后存储在预设慢查询数据库中,再通过对慢查询日志中的慢查询语句进行结构化处理后,将慢查询日志中的其他日志信息和结构化语句构成的慢查询信息存储在预设慢查询数据库中,其中,格式转换、序列化处理后的慢查询日志和慢查询信息以一一对应的关联关系存储在预设慢查询数据库中。
当预设关系型数据库发生异常时,慢查询日志处理系统从预设慢查询数据库中获取慢查询信息,对慢查询信息进行分析,确定预设关系型数据库的异常原因。
以下结合实施例对本申请提供的慢查询日志处理方法的具体实现方式进行说明。
请参考图2,为本申请实施例提供的慢查询日志处理方法的流程示意图一,如图2所示,该方法可以包括:
S101:获取预设关系型数据库的慢查询日志。
在本实施例中,预设关系型数据库为输出慢查询日志的数据库,关系型数据库在执行SQL语句时,将执行时长超过阈值的SQL语句定义为慢查询语句,并将慢查询语句打印至慢查询日志中。
示例的,可以采用如下程序代码实现对SQL语句的判断,以从SQL语句中筛选出执行时长过长的慢查询语句。
mysql>show variables like"long_query_time";
|Variable_name|Value|
|long_query_time|2.000000|
1row in set(0.02sec)
其中,long_query_time为时长阈值,时长阈值默认值可以为10秒,上述示例中设置为2秒。
在一些实施例中,需要在关系型数据库中开启慢查询日志记录开关,在慢查询日志记录开关开启后,关系型数据库在执行SQL语句时,将执行时长超过阈值的SQL语句定义为慢查询语句,并将慢查询语句打印至慢查询日志中。
示例的,可以采用如下程序代码实现慢查询日志记录开关的开启。
mysql>show variables like"slow_query_log";
|Variable_name|Value|
|slow_query_log|ON|
S102:对慢查询日志中的慢查询语句进行结构化处理,生成结构化语句。
在本实施例中,关系型数据库在生成慢查询日志时,会记录被确定为慢查询语句的SQL语句,以及执行该SQL语句的执行信息,通过从慢查询日志中识别并提取出慢查询语句,慢查询语句可以包括:语句字段、所涉及的数据库表、数据库字段、查询条件、查询内容等信息,对慢查询语句的结构化处理,实际上是将慢查询语句转换为针对该数据库表及数据库字段的通用语句,得到结构化语句。
在一种可能的实现方式中,上述S103对慢查询日志中的慢查询语句进行结构化处理,生成结构化语句的过程,可以包括:
将慢查询语句中的内容字段采用预设占位符进行替换,生成结构化语句。
在本实施例中,根据慢查询语句中所包括的内容,确定慢查询语句中的内容字段,内容字段用于指示慢查询语句在数据库表及数据库字段中所涉及的具体内容,该内容用于指示慢查询语句为针对数据库字段中具体内容的语句,通过将内容字段采用预设占位符进行替换,使得替换后的语句成为针对该数据库表及该数据库字段的通用语句,以替换后的语句作为结构化语句。
需要说明的是,将内容字段采用预设占位符替换后,通用语句中仍然保留有原慢查询语句中的语句类型字段,以保证替换后的通用语句和原慢查询语句的语句类型仍保持一致。
示例的,原慢查询语句为select count(*)from TestOrder where id=1,其中,select count为语句类型字段,用于指示该慢查询语句的类型为查询类型(SelectStmt),TestOrder为数据库表,id为数据库字段,“=”为查询条件,“*”和“1”为查询内容,采用预设占位符“?”对查询内容进行替换,得到的结构化语句为select count(?)from TestOrderwhere id=?。
在一些实施例中,可以采用FormatParsableStatement函数实现对慢查询语句的结构化处理。
S103:根据慢查询日志中的其他日志信息和结构化语句,生成慢查询信息。
在本实施例中,慢查询日志中包括的主要字段有:Time(SQL语句的开始执行时间)、User@Host(执行SQL语句的数据库用户和IP)、Query_time(执行SQL语句的耗时)、Lock_time(获取锁的耗时)、Rows_sent(查询结果返回的行数)、Rows_examined(查询检查的行数)、SET timestamp(日志产生的时间戳)以及具体的慢查询语句。
示例的,以下为一段慢查询日志的具体样式,慢查询日志以开始执行时间开头、慢查询语句结束,从慢查询日志可以提取出数据库表、执行时间、涉及行数等指标。
#Time:2023-09-22T14:41:39.500382+08:00
#User@Host:qa_test[qa_test]@localhost[]Id:1440917
#Query_time:11.122750Lock_time:0.000053Rows_sent:1Rows_examined:219279
SET timestamp=1695364899;
select count(*)from TestOrder;
在将慢查询日志中的慢查询语句转换为结构化语句后,可以将主要字段中的其他字段和结构化语句作为慢查询信息进行存储。
在一些实施例中,还可以从慢查询语句中确定数据库表,慢查询信息中还可以包括:数据库表的信息、原始的慢查询语句、慢查询日志的来源机器等信息。
S104:若预设关系型数据库异常,根据慢查询信息对预设关系型数据库进行异常原因分析。
在本实施例中,预设关系型数据库异常可以为预设关系型数据库因为慢查询语句导致数据执行堆积、数据库卡死宕机,当预设关系型数据库异常时,对慢查询信息进行分析,统计预设关系型数据库中执行的各个结构化语句的执行频率,根据各个结构化语句的执行频率和执行耗时进行异常原因分析,确定引起预设关系型数据库异常的主要结构化语句,对主要结构化语句中涉及的数据库表、数据库字段以及查询条件进行分析,确定结构化语句引起慢查询的原因,判断结构化语句是否具有优化空间,是否可以对数据库参数进行调优,造成慢查询的瓶颈,以通过对结构化语句的表达格式进行修改,以提高SQL语句的执行效率,避免因此大量的慢查询语句导致关系型数据库堆积大量无法及时处理的请求,造成数据库卡死宕机。
在一些实施例中,引起慢查询的原因可以包括:语句原因、数据库原因和系统原因。
其中,语句原因包括:索引、SQL写法、锁,其中,可优化的索引包括无效索引、使用不当的索引、缺少索引等导致全表扫描的搜因,可优化的SQL写法包括子查询、or、like等;可优化的锁包括死锁或者锁等待。
数据库原因包括:表连接和数据量多大,表连接可以通过多表连接进行优化,数据量过大可以通过索引条件拆分为小范围索引、表轮转。
系统原因包括网络拥堵、系统负载过高、数据库服务器硬件性能不足等。
在一些实施例中,可以统计关系型数据库的慢查询数量、慢查询频率、慢查询的平均执行时间和最大执行时间、慢查询的时间分布,根据慢查询数量、慢查询频率、慢查询的平均执行时间和最大执行时间、慢查询的时间分布、以及关系型数据库的查询需求、负载,确定SQL语句的优化优先级,根据优化优先级依次优化慢查询SQL语句。
上述实施例提供的慢查询日志处理方法,通过对预设关系型数据库的慢查询日志中的慢查询语句进行结构化处理,生成结构化语句,根据慢查询日志中的其他日志信息和结构化语句,生成慢查询信息,在预设关系型数据库发生异常时,根据慢查询信息对预设关系型数据库进行异常异常原因分析,确定引起异常的结构化语句,以便可以通过对引起异常的结构化语句进行优化,实现对慢查询日志的高效管理,及时定位问题语句并提高数据库的故障处理效率。
在一种可能的实现方式中,请参考图3,为本申请实施例提供的慢查询日志处理方法的流程示意图二,如图3所示,上述S101获取预设关系型数据库的慢查询日志的过程,可以包括:
S201:采用数据收集器获取预设关系型数据库的慢查询文件目录中的日志文件。
在本实施例中,预设关系型数据库在执行SQL语句确定慢查询语句并打印生成慢查询日志后,将慢查询日志的日志文件输出到预设关系型数据库的慢查询文件目录中进行存储。
示例的,可以采用如下程序代码实现对慢查询日志的日志文件的存储。
mysql>show variables like"slow_query_log_file";
|Variable_name|Value|
|slow_query_log_file|/opt/homebrew/var/mysql/xxx.log|
1row in set(0.00sec)
其中,slow_query_log_file用于指示慢查询文件目标。
数据采集器用于对慢查询文件目录进行监控,以从预设关系型数据库的慢查询文件目录中实时采集最新生成的日志文件。
在一些实施例中,数据采集器可以为轻量型数据采集器,例如可以为Filebeat采集器。
S202:采用流式处理框架对日志文件进行格式转换,生成序列化的慢查询日志。
在本实施例中,慢查询日志处理系统采用预设搜索分析引擎实现对慢查询信息的搜索及分析,为了使得预设搜索分析引擎可以对慢查询信息进行分析,需要先对慢查询日志的日志文件进行格式转换,将日志文件中的内容转换为JSON格式的序列化内容,得到序列化的慢查询日志。
采用流式处理框架将日志文件转换为序列化的慢查询日志后,可以将慢查询日志发送至预设搜索分析引擎,对慢查询日志进行汇总聚合,以便对慢查询日志进行数据查询及分析。
示例的,预设搜索分析引擎可以为Elasticsearch搜索分析引擎。
在一些实施例中,流式处理框架可以为Flink框架,可以采用Flink框架中的用户自定义函数(User Defined Function,UDF)对日志文件进行实时格式转换,例如outputDict['instance_ip']=inputDict['uses']['_ip']。
在一种可能的实现方式中,在数据采集器和流式处理框架之间,采用Kafka作为消息中间件,将日志文件从数据采集器发送至流式处理框架,保证可持久化和高吞吐量的日志传输。
示例的,请参考图4,为本申请实施例提供的慢查询日志采集流程框图,如图4所示,采用filebeat数据收集器从慢查询文件目录中获取日志文件,将日志文件发送给Kafka,通过Kafka将日志文件发送至Flink流式处理框架进行格式转换,再将转换后的序列化慢查询日志发送至Elasticsearch搜索分析引擎进行汇总。
在一些实施例中,可以采用POST方法传输HTTP请求,将序列化的慢查询日志发送至预设搜索分析引擎所对应的数据库SQL_Digest。
具体的,POST方法的请求地址例如可以为:http://domain/v1/parse_slowlog,请求协议可以表示为:
https POST
Content-Type:application/json
Accept:application/json
其中,Content-Type表示指定请求的内容类型为application/json,响应返回的内容类型为application/json。
示例的,请参考表1,为本申请实施例提供的请求参数含义表,如表1所示,请求内容为json格式,字段描述如下。
表1请求参数含义表
参数 | 类型 | 必填 | 含义 |
origin_sql_info | string | 是 | 慢查询日志序列化后的json字符串 |
instance_ip | string | 是 | 打印出慢查询日志的数据库机器ip |
数据库SQL_Digest对HTTP请求进行处理后会向流式处理框架返回请求处理结果。请参考表2,为本申请实施例提供的返回参数含义表,如表2所示,返回内容为json格式,字段描述如下。
表2返回参数含义表
参数 | 类型 | 含义 |
code | number | 返回码 |
msg | string | 返回含义 |
error_info | string | 具体的报错信息 |
请参考表3,为本申请实施例提供的返回码含义表,如表3所示,不同的返回码具有不同的含义。
表3返回码含义表
code | msg | 含义 |
200 | ok | 返回成功 |
201 | log is exist | 该慢查询日志已存在 |
401 | para error | 输入参数错误 |
500 | other error | 其他错误 |
501 | internal error | 网络错误 |
502 | db error | 数据库错误 |
示例的,以下为采用POST方法传输HTTP请求的代码。
curl-XPOST-H"Content-Type:application/json"http://127.0.0.1:12345/v1/parse_slowlog"-d'{"origin_sql_info":"#Time:2023 -09 -22T14:41:39.500382+08:00#User@Host:test[test]@localhost[]Id:1440917#Query_time:11.122750Lock_time:0.000053Rows_sent:1Rows_examined:219279SET timestamp=1695364899;select count(*)from TestOrder;","instance_ip":"127.0.0.1"}'
返回结果为:{"code":200,"msg":"","error_info":""}。
上述实施例提供的慢查询日志处理方法,通过数据收集器对预设关系型数据库的慢查询文件目录进行监控,以实时从慢查询文件目录中获取慢查询日志文件,并通过流式处理框架将日志文件转换为序列化的慢查询日志,以便可以对慢查询日志进行汇总分析,从而更好地分析数据库异常原因。
在一种可能的实现方式中,在上述S101获取预设关系型数据库的慢查询日志之后,该方法还可以包括:
对慢查询日志进行解析,采用预设正则表达式提取慢查询日志中的字段信息,字段信息包括:慢查询语句和其他日志信息。
在本实施例中,正则表达式是采用文本字符和通配符组合构成的用于查找文本的表达式,采用慢查询日志处理系统对应的编码语言对慢查询日志进行解析,采用正则表达式从慢查询日志中提取字段信息,获取慢查询日志中各个字段的具体内容,以便可以采用慢查询日志的各个字段作为索引,对各个字段的内容进行搜索及分析。
示例的,本申请实施例的慢查询日志处理系统为采用go语言实现的,因此,可以采用go语言对慢查询日志进行解析,提取慢查询日志中各个字段的具体内容。
其中,在go语言中,正则表达式\d+表示匹配一个或多个数字,符号{}可表示数字个数;(.\d+)?表示匹配一个小数部分,小数点后有一个或多个数字,符号?表示小数部分可能出现,也可能不出现,.*\表示匹配任意字符零个或多个。
示例的,可以采用以下go语言程序代码对MySQL类型的关系型数据库产生的慢查询日志进行正则处理。
在一些实施例中,若关系型数据库为TiDB类型,则HTTP请求的请求地址为http://domain/v1/parse_tidbslowlog,请求协议、请求参数、返回参数与MySQL处理无异。
TiDB类型的关系型数据库所产生的慢查询日志的字段比MySQL多,具体包括:Txn_start_ts(事务的开始时间戳,也是事务的唯一ID)、Query_time(SQL执行语句耗时)、Parse_time(语法解析耗时)、Compile_time(查询优化耗时)、Optimize_time(优化查询计划耗时)、Prewrite_time(事务两阶段提交中第一阶段(prewrite阶段)耗时)、Commit_time(事务两阶段提交中第二阶段(commit阶段)耗时)、Digest(参数化后的Hash值)、Plan(SQL执行计划)以及TiDB具体的慢查询语句。
示例的,以下为一段TiDB慢查询日志的具体样式。
#Time:2019-08-14T09:26:59.487776265+08:00
#Txn_start_ts:410450924122144769
#User@Host:root[root]@localhost[127.0.0.1]
#Conn_ID:3086
#Exec_retry_time:5.1Exec_retry_count:3
#Query_time:1.527627037
#Parse_time:0.000054933
#Compile_time:0.000129729
#Rewrite_time:0.00000003Preproc_subqueries:2Preproc_subqueries_time:0.000000002
#Optimize_time:0.00000001
#Wait_TS:0.00001078
#Process_time:0.07Request_count:1Total_keys:131073Process_keys:131072Prewrite_time:0.335415029Commit_time:0.032175429Get_commit_ts_time:0.000177098Local_latch_wait_time:0.106869448Write_keys:131072Write_size:3538944Prewrite_region:1
#DB:test
#Is_internal:false
#Digest:50a2e32d2abbd6c1764b1b7f2058d428ef2712b029282b776beb9506a365c0f1
#Stats:t:pseudo
#Num_cop_tasks:1
#Cop_proc_avg:0.07Cop_proc_p90:0.07Cop_proc_max:0.07Cop_proc_addr:172.16.5.87:20171
#Cop_wait_avg:0Cop_wait_p90:0Cop_wait_max:0Cop_wait_addr:172.16.5.87:20171
#Cop_backoff_regionMiss_total_times:200Cop_backoff_regionMiss_total_time:0.2Cop_backoff_regionMiss_max_time:0.2Cop_backoff_regionMiss_max_addr:127.0.0.1Cop_backoff_regionMiss_avg_time:0.2Cop_backoff_regionMiss_p90_time:0.2
#Cop_backoff_rpcPD_total_times:200Cop_backoff_rpcPD_total_time:0.2Cop_backoff_rpcPD_max_time:0.2Cop_backoff_rpcPD_max_addr:127.0.0.1Cop_backoff_rpcPD_avg_time:0.2Cop_backoff_rpcPD_p90_time:0.2
#Cop_backoff_rpcTiKV_total_times:200Cop_backoff_rpcTiKV_total_time:0.2Cop_backoff_rpcTiKV_max_time:0.2Cop_backoff_rpcTiKV_max_addr:127.0.0.1Cop_backoff_rpcTiKV_avg_time:0.2Cop_backoff_rpcTiKV_p90_time:0.2
#Mem_max:525211
#Disk_max:65536
#Prepared:false
#Plan_from_cache:false
#Succ:true
#Plan:
tidb_decode_plan('ZJAwCTMyXzcJMAkyMAlkYXRhOlRhYmxlU2Nhbl82CjEJMTBfNgkxAR0AdAEY1Dp0LCByYW5nZTpbLWluZiwraW5mXSwga2VlcCBvcmRlcjpmYWxzZSwgc3RhdHM6cHNldWRvCg==')
use test;
insert into select*from t;
可以采用以下go语言程序代码对TiDB类型的关系型数据库产生的慢查询日志进行正则处理。
["Time"]=`^#Time:\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.*\d{2}:\d{2}?#`
["Txn_start_ts"]=`#Txn_start_ts:\d+`
["User@Host"]=`#User@Host:.*\]`
["Query_time"]=`#Query_time:\d+(\.\d+)?`
["Parse_time"]=`#Parse_time:\d+(\.\d+)?`
["Compile_time"]=`#Compile_time:\d+(\.\d+)?`
["Optimize_time"]=`#Optimize_time:\d+(\.\d+)?`
["Prewrite_time"]=`Prewrite_time:\d+(\.\d+)?`
["Commit_time"]=`Commit_time:\d+(\.\d+)?`
["Plan"]="Plan:.*$"
上述实施例提供的慢查询日志处理方法,通过对慢查询日志进行解析,采用预设正则表达式提取慢查询日志中的字段信息,以便可以对慢查询日志中的字段内容进行统一管理,便于对慢查询日志进行搜索及分析。
在一种可能的实现方式中,在上述S102对慢查询日志中的慢查询语句进行结构化处理,生成结构化语句之前,该方法还可以包括:
删除慢查询语句中的注释;删除慢查询语句中的重复空白格;将慢查询语句中的字符的大小写转换为统一形式;将慢查询语句中的引号进行标准化处理。
在本实施例中,为了使得根据慢查询语句生成的结构化语句在格式上具有一致性,需要对慢查询语句进行格式统一化处理,其中,请参考图5,为本申请实施例提供的格式统一化处理的框图,如图5所示,格式统一化处理的内容可以包括:采用删除函数DeleteComment将SQL语句中的注释删除,防止注释影响采集和分析结果;采用空白格函数NormalizeWhitespace将SQL语句中的重复空白格删除,使得SQL语句中不存在连续的空白格,保证SQL语句的标准化;采用大小写函数NormalizeIdentifiers将SQL语句中的字符的大小写转换为统一格式,例如统一转换为小写,防止采集和分析的结果受到大小写的影响;采用引号函数NormalizeQuotes对SQL语句中的引号进行标准化处理,使得SQL语句中的引号的使用正确性和一致性。
在一些实施例中,在对慢查询语句进行格式统一化处理之间,可以先采用对象转换函数Normalize将原始的SQL语句从字符串转换为ParsableStatement对象,以便后续各个函数可以对SQL语句进行统一化处理。
在一种可能的实现方式中,可以将上述对象转换函数Normalize、删除函数DeleteComment、空白格函数NormalizeWhitespace、大小写函数NormalizeIdentifiers、引号函数NormalizeQuotes统一集成于格式统一化处理函数FormatParsableStatement中,以使得通过调用格式统一化处理函数FormatParsableStatement,实现对SQL语句的格式统一化处理。
需要说明的是,图5所示的删除函数DeleteComment、空白格函数NormalizeWhitespace、大小写函数NormalizeIdentifiers、引号函数NormalizeQuotes的执行顺序仅为一种示例,并不作为唯一限定,其具体的执行顺序可以根据需要自行决定,本实施例对此不做限制。
上述实施例提供的慢查询日志处理方法,通过删除慢查询语句中的注释;删除慢查询语句中的重复空白格;将慢查询语句中的字符的大小写转换为统一形式;将慢查询语句中的引号进行标准化处理,以保证慢查询语句的格式保持统一,避免因格式不统一影响语句分析,保证对语句进行分析的准确性。
在一种可能的实现方式中,请参考图6,为本申请实施例提供的慢查询日志处理方法的流程示意图三,如图6所示,在上述S103根据慢查询日志中的其他日志信息和结构化语句,生成慢查询信息之后,该方法还可以包括:
S301:根据慢查询日志中的目标执行信息,生成唯一标识。
S302:根据唯一标识,将慢查询信息存储在预设慢查询数据库中。
在本实施例中,在根据结构化语句和其他日志信息生成慢查询信息后,需要将慢查询信息存储在预设慢查询数据库SQL_Digest中,以便当需要通过搜索分析引擎对引起关系型数据库慢查询的原因进行分析时,可以从预设慢查询数据库SQL_Digest调用慢查询信息。
在本实施例中,由于原始SQL语句中的具体内容字段被占位符替换掉了,使得仅内容字段不同的原始SQL语句对应的结构化语句相同,为了保证每个原始SQL语句的结构化语句不会被重复存储,可以根据慢查询日志中SQL语句的目标执行信息生成唯一标识,建立唯一标识和慢查询信息的对应关系,将唯一标识以及对应的慢查询信息统一存储在预设慢查询数据库中。
其中,目标执行信息可以包括至少一个具有唯一性的执行信息,例如,目标执行信息至少可以包括SQL语句的执行时间信息,例如SQL语句的开始执行时间,和/或执行SQL语句的耗时。
在一种可能的实现方式中,上述S301根据慢查询日志中的目标执行信息,生成唯一标识的过程,可以包括:
根据慢查询日志中的语句执行时间、语句执行用户和语句执行主体,通过哈希计算生成唯一标识。
在本实施例中,根据SQL语句的语句执行时间Query_time、语句执行用户User和语句执行主体Host,将这三个执行信息合并在一起进行哈希计算,得到具有固定长度的字符串作为唯一标识,示例的,可以对三个执行信息合并在一起进行md5处理得到唯一标识。
在一种可能的实现方式中,请参考图7,为本申请实施例提供的慢查询日志处理方法的流程示意图四,如图7所示,上述S302根据唯一标识,将慢查询信息存储在预设慢查询数据库中的过程,可以包括:
S401:判断预设慢查询数据库中是否存在唯一标识。
S402:若不存在,根据唯一标识,将慢查询信息存储在预设慢查询数据库中。
在本实施例中,唯一标识用于判断慢查询信息是否重复存储,因此,在根据目标执行信息计算得到唯一标识后,需要判断预设慢查询数据库中是否已经存在该唯一标识,若预设慢查询数据库中已经存在该唯一标识,则返回“该慢查询日志已存在”的指示信息,若预设慢查询数据库中不存在该唯一标识,则确定该慢查询信息尚未存储在该预设慢查询数据库中,建立唯一标识和慢查询信息的对应关系,将唯一标识以及对应的慢查询信息统一存储在预设慢查询数据库中。
在一些实施例中,可以使用redis setnx函数来判断唯一标识是否存在。
上述实施例提供的慢查询日志处理方法,通过根据慢查询日志的目标执行信息生成唯一标识,以根据该唯一标识将慢查询信息存储在预设慢查询数据库中,避免了慢查询日志的重复存在,保证慢查询日志在预设慢查询数据库中的唯一性,以便更加准确地进行异常分析。
在一种可能的实现方式中,请参考图8,为本申请实施例提供的慢查询日志处理方法的流程示意图五,如图8所示,上述S302根据唯一标识,将慢查询信息存储在预设慢查询数据库中的过程,可以包括:
S501:根据结构化语句,生成语句标识。
S502:判断预设慢查询数据库中是否存在一组对应的唯一标识和语句标识。
S503:若不存在,根据唯一标识和语句标识,将慢查询信息存储在预设慢查询数据库中。
在本实施例中,为了提高慢查询信息重复存储判断的准确性,可以在唯一标识的基础上增加语句标识,具体的,根据结构化语句中的SQL语句类型、SQL语句涉及的数据库表、SQL语句涉及的数据库字段、SQL语句设计的条件(order by、group by)中的一个或多个进行哈希计算,得到具有固定长度的字符串作为语句标识。示例的,固定长度例如可以为32位字符号整数。示例的,可以采用Digester函数计算语句标识。
其中,SQL语句的类型包括:SelectStmt(查询类型)、InsertStmt(插入类型)、DeleteStmt(删除类型)、UpdateStme(更新类型)和UnionStme(联合类型)、可以根据语句类型对数据库进行不同类型的操作。
在计算得到唯一标识和语句标识后,需要判断预设慢查询数据库中是否已经存在该对应的唯一标识和语句标识,若预设慢查询数据库中已经存在该对应的唯一标识和语句标识,则返回“该慢查询日志已存在”的指示信息,若预设慢查询数据库中不存在该对应的唯一标识和语句标识,则确定该慢查询信息尚未存储在该预设慢查询数据库中,建立唯一标识、语句标识和慢查询信息的对应关系,将唯一标识、语句标识以及对应的慢查询信息统一存储在预设慢查询数据库中。
在一些实施例中,在得到唯一标识和语句标识后,存储在预设慢查询数据库的慢查询信息可以包括:自增主键、原始的慢查询日志、原始的慢查询语句、结构化语句、数据库表、执行该条SQL语句的主体host、执行该条SQL语句的用户、执行该条SQL语句的耗时、慢查询日志的来源机器、慢查询日志的产生时间戳、唯一标识、语句标识,还可以在额外字段用JSON存储系统扩展性所需要的信息,例如处理TiDB慢查询日志所需要记录的指标查询优化耗时和优化查询计划耗时。
上述实施例提供的慢查询日志处理方法,根据结构化语句生成语句标识,以根据唯一标识和语句标识将慢查询信息存储在预设慢查询数据库中,避免了慢查询日志的重复存在,保证慢查询日志在预设慢查询数据库中的唯一性,以便更加准确地进行异常分析。
在一种可能的实现方式中,慢查询日志处理系统面向用户提供可视化界面,在可视化界面中可以按照字段显示预设慢查询数据库中的慢查询日志,显示字段包括:执行用户、执行开始时间/执行结束时间、结构化语句、数据库IP、请求来源IP、执行耗时、锁等待耗时、查询结果返回的行数、查询检查的行数、关系型数据库、原始SQL语句、原始的慢查询日志、唯一标识等信息。
本实施例的慢查询日志处理系统可以与多个关系型数据库进行通信,以获取多个关系型数据库的慢查询日志,数据库管理人员通过在慢查询日志处理系统的可视化接卖弄中选择数据库用户以及数据库所在的host,可以对不同数据库的SQL语句进行分析,也可以对同一个SQL语句在不同数据库上的执行情况进行分析。
在一些实施例中,慢查询日志处理系统还提供用户输入模块,对于关系型数据库执行的不会出现慢查询的SQL语句,也可以将该SQL语句录入至慢查询日志处理系统,以便对关系型数据库中正在运行的SQL语句进行整理。
在一些实施例中,慢查询日志处理系统还提供筛选模块,例如日期筛选模块、执行用户筛选模块、数据库筛选模块、结构化语句筛选模块、唯一标识筛选模块等,数据库管理人员可以通过不同的筛选模块输入不同的筛选条件,以使得预设搜索分析引擎通过预设慢查询数据库获取满足对应筛选条件的慢查询信息。
在一些实施例中,还可以通过筛选模块将满足对应筛选条件的慢查询信息的慢查询日志删除。
在一些实施例中,慢查询日志处理系统还支持对程序人员在系统中编写的新SQL语句进行审核,程序开发人员提交本次开发任务中涉及到的新SQL语句,提交后系统会提醒数据库管理人员对新SQL语句进行审核,判断新SQL语句是否正确使用索引,新SQL语句的执行频率、新SQL语句是否会对关系型数据库造成压力、影响关系型数据库的性能,如果SQL语句存在问题,数据库管理人员会针对该新SQL语句生成修改意见,以将审核任务返回给程序开发人员,由程序开发人员根据建议修改新SQL语句后重新提交至慢查询日志系统进行审核,直至审核通过后发布新SQL语句,新SQL语句后,数据库管理人员可以通过慢查询日志处理系统定时检查该SQL语句是否出现慢查询。
在一些实施例中,可以根据执行SQL语句的数据库用户、host和耗时,确定不同机器上的关系型数据库性的性能表现,根据原始SQL语句和结构化语句的对比,确定耗时较多的SQL语句的类型,以对SQL语句进行优化。
在上述慢查询日志处理方法的基础上,本申请实施例还提供一种慢查询日志处理装置。请参考图9,为本申请实施例提供的慢查询日志处理装置的结构示意图,如图9所示,该装置可以包括:
日志获取模块601,用于获取预设关系型数据库的慢查询日志;
结构化处理模块602,用于对慢查询日志中的慢查询语句进行结构化处理,生成结构化语句;
慢查询信息生成模块603,用于根据慢查询日志中的其他日志信息和结构化语句,生成慢查询信息;
异常分析模块604,用于若预设关系型数据库异常,根据慢查询信息对预设关系型数据库进行异常原因分析。
在一种可能的实现方式中,上述日志获取模块601,可以包括:
日志文件采集单元,用于采用数据收集器获取预设关系型数据库的慢查询文件目录中的日志文件;
格式转换单元,用于采用流式处理框架对日志文件进行格式转换,生成序列化的慢查询日志。
在一种可能的实现方式中,在上述日志获取模块601之后,该装置还可以包括:
字段提取模块,用于对慢查询日志进行解析,采用预设正则表达式提取慢查询日志中的字段信息,字段信息包括:慢查询语句和其他日志信息。
在一种可能的实现方式中,在上述结构化处理模块602,具体用于将慢查询语句中的内容字段采用预设占位符进行替换,生成结构化语句。
在一种可能的实现方式中,上述结构化处理模块602之前,该装置还可以包括:
格式统一模块,具体用于删除慢查询语句中的注释;删除慢查询语句中的重复空白格;将慢查询语句中的字符的大小写转换为统一形式;将慢查询语句中的引号进行标准化处理。
在一种可能的实现方式中,在上述慢查询信息生成模块103之后,该装置还可以包括:
唯一标识生成模块,用于根据慢查询日志中的目标执行信息,生成唯一标识;
信息存储模块,用于根据唯一标识,将慢查询信息存储在预设慢查询数据库中。
在一种可能的实现方式中,唯一标识生成模块,具体用于根据慢查询日志中的语句执行时间、语句执行用户和语句执行主体,通过哈希计算生成唯一标识。
在一种可能的实现方式中,信息存储模块,具体用于判断预设慢查询数据库中是否存在唯一标识;若不存在,根据唯一标识,将慢查询信息存储在预设慢查询数据库中。
在一种可能的实现方式中,信息存储模块,具体用于根据结构化语句,生成语句标识;判断预设慢查询数据库中是否存在一组对应的唯一标识和语句标识;若不存在,根据唯一标识和语句标识,将慢查询信息存储在预设慢查询数据库中。
上述实施例提供的慢查询日志处理装置,通过对预设关系型数据库的慢查询日志中的慢查询语句进行结构化处理,生成结构化语句,根据慢查询日志中的其他日志信息和结构化语句,生成慢查询信息,在预设关系型数据库发生异常时,根据慢查询信息对预设关系型数据库进行异常异常原因分析,确定引起异常的结构化语句,以便可以通过对引起异常的结构化语句进行优化,实现对慢查询日志的高效管理,及时定位问题语句并提高数据库的故障处理效率。
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器,或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。
请参考图10,为本申请实施例提供的计算机设备的示意图,如图10所示,该计算机设备700可以包括:处理器701、存储介质702和总线,存储介质702存储有处理器701可执行的程序指令,当计算机设备700运行时,处理器701与存储介质702之间通过总线通信,处理器201执行程序指令,以执行上述慢查询日志处理方法。
具体的,处理器执行上述慢查询日志处理方法的步骤包括:
获取预设关系型数据库的慢查询日志;对慢查询日志中的慢查询语句进行结构化处理,生成结构化语句;根据慢查询日志中的其他日志信息和结构化语句,生成慢查询信息;若预设关系型数据库异常,根据慢查询信息对预设关系型数据库进行异常原因分析。
在一种可能的实现方式中,处理器执行上述获取预设关系型数据库的慢查询日志的过程,可以包括:
采用数据收集器获取预设关系型数据库的慢查询文件目录中的日志文件;采用流式处理框架对日志文件进行格式转换,生成序列化的慢查询日志。
在一种可能的实现方式中,处理器执行上述获取预设关系型数据库的慢查询日志之后,处理器执行的步骤还可以包括:
对慢查询日志进行解析,采用预设正则表达式提取慢查询日志中的字段信息,字段信息包括:慢查询语句和其他日志信息。
在一种可能的实现方式中,处理器执行上述对慢查询日志中的慢查询语句进行结构化处理,生成结构化语句的过程,可以包括:
将慢查询语句中的内容字段采用预设占位符进行替换,生成结构化语句。
在一种可能的实现方式中,在处理器执行上述对慢查询日志中的慢查询语句进行结构化处理,生成结构化语句之前,处理器执行的步骤还可以包括:
删除慢查询语句中的注释;删除慢查询语句中的重复空白格;将慢查询语句中的字符的大小写转换为统一形式;将慢查询语句中的引号进行标准化处理。
在一种可能的实现方式中,在处理器执行上述根据慢查询日志中的其他日志信息和结构化语句,生成慢查询信息之后,处理器执行的步骤还可以包括:
根据慢查询日志中的目标执行信息,生成唯一标识;根据唯一标识,将慢查询信息存储在预设慢查询数据库中。
在一种可能的实现方式中,处理器执行上述根据唯一标识,将慢查询信息存储在预设慢查询数据库中的过程,可以包括:
判断预设慢查询数据库中是否存在唯一标识;若不存在,根据唯一标识,将慢查询信息存储在预设慢查询数据库中。
在一种可能的实现方式中,处理器执行上述根据唯一标识,将慢查询信息存储在预设慢查询数据库中的过程,可以包括:
根据结构化语句,生成语句标识;判断预设慢查询数据库中是否存在一组对应的唯一标识和语句标识;若不存在,根据唯一标识和语句标识,将慢查询信息存储在预设慢查询数据库中。
上述实施例处理器执行的慢查询日志处理方法,通过对预设关系型数据库的慢查询日志中的慢查询语句进行结构化处理,生成结构化语句,根据慢查询日志中的其他日志信息和结构化语句,生成慢查询信息,在预设关系型数据库发生异常时,根据慢查询信息对预设关系型数据库进行异常异常原因分析,确定引起异常的结构化语句,以便可以通过对引起异常的结构化语句进行优化,实现对慢查询日志的高效管理,及时定位问题语句并提高数据库的故障处理效率。
可选地,本发明还提供一种计算机可读存储介质,存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述慢查询日志处理方法。
具体的,处理器执行上述慢查询日志处理方法的步骤包括:
获取预设关系型数据库的慢查询日志;对慢查询日志中的慢查询语句进行结构化处理,生成结构化语句;根据慢查询日志中的其他日志信息和结构化语句,生成慢查询信息;若预设关系型数据库异常,根据慢查询信息对预设关系型数据库进行异常原因分析。
在一种可能的实现方式中,处理器执行上述获取预设关系型数据库的慢查询日志的过程,可以包括:
采用数据收集器获取预设关系型数据库的慢查询文件目录中的日志文件;采用流式处理框架对日志文件进行格式转换,生成序列化的慢查询日志。
在一种可能的实现方式中,处理器执行上述获取预设关系型数据库的慢查询日志之后,处理器执行的步骤还可以包括:
对慢查询日志进行解析,采用预设正则表达式提取慢查询日志中的字段信息,字段信息包括:慢查询语句和其他日志信息。
在一种可能的实现方式中,处理器执行上述对慢查询日志中的慢查询语句进行结构化处理,生成结构化语句的过程,可以包括:
将慢查询语句中的内容字段采用预设占位符进行替换,生成结构化语句。
在一种可能的实现方式中,在处理器执行上述对慢查询日志中的慢查询语句进行结构化处理,生成结构化语句之前,处理器执行的步骤还可以包括:
删除慢查询语句中的注释;删除慢查询语句中的重复空白格;将慢查询语句中的字符的大小写转换为统一形式;将慢查询语句中的引号进行标准化处理。
在一种可能的实现方式中,在处理器执行上述根据慢查询日志中的其他日志信息和结构化语句,生成慢查询信息之后,处理器执行的步骤还可以包括:
根据慢查询日志中的目标执行信息,生成唯一标识;根据唯一标识,将慢查询信息存储在预设慢查询数据库中。
在一种可能的实现方式中,处理器执行上述根据唯一标识,将慢查询信息存储在预设慢查询数据库中的过程,可以包括:
判断预设慢查询数据库中是否存在唯一标识;若不存在,根据唯一标识,将慢查询信息存储在预设慢查询数据库中。
在一种可能的实现方式中,处理器执行上述根据唯一标识,将慢查询信息存储在预设慢查询数据库中的过程,可以包括:
根据结构化语句,生成语句标识;判断预设慢查询数据库中是否存在一组对应的唯一标识和语句标识;若不存在,根据唯一标识和语句标识,将慢查询信息存储在预设慢查询数据库中。
上述实施例处理器执行的慢查询日志处理方法,通过对预设关系型数据库的慢查询日志中的慢查询语句进行结构化处理,生成结构化语句,根据慢查询日志中的其他日志信息和结构化语句,生成慢查询信息,在预设关系型数据库发生异常时,根据慢查询信息对预设关系型数据库进行异常异常原因分析,确定引起异常的结构化语句,以便可以通过对引起异常的结构化语句进行优化,实现对慢查询日志的高效管理,及时定位问题语句并提高数据库的故障处理效率。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
上仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (12)
1.一种慢查询日志处理方法,其特征在于,所述方法包括:
获取预设关系型数据库的慢查询日志;
对所述慢查询日志中的慢查询语句进行结构化处理,生成结构化语句;
根据所述慢查询日志中的其他日志信息和所述结构化语句,生成慢查询信息;
若所述预设关系型数据库异常,根据所述慢查询信息对所述预设关系型数据库进行异常原因分析。
2.根据权利要求1所述的方法,其特征在于,所述获取预设关系型数据库的慢查询日志,包括:
采用数据收集器获取所述预设关系型数据库的慢查询文件目录中的日志文件;
采用流式处理框架对所述日志文件进行格式转换,生成序列化的慢查询日志。
3.根据权利要求1所述的方法,其特征在于,所述获取预设关系型数据库的慢查询日志之后,所述方法还包括:
对所述慢查询日志进行解析,采用预设正则表达式提取所述慢查询日志中的字段信息,所述字段信息包括:所述慢查询语句和所述其他日志信息。
4.根据权利要求1所述的方法,其特征在于,所述对所述慢查询日志中的慢查询语句进行结构化处理,生成结构化语句,包括:
将所述慢查询语句中的内容字段采用预设占位符进行替换,生成所述结构化语句。
5.根据权利要求1所述的方法,其特征在于,所述对所述慢查询日志中的慢查询语句进行结构化处理,生成结构化语句之前,所述方法还包括:
删除所述慢查询语句中的注释;
删除所述慢查询语句中的重复空白格;
将所述慢查询语句中的字符的大小写转换为统一形式;
将所述慢查询语句中的引号进行标准化处理。
6.根据权利要求1所述的方法,其特征在于,所述根据所述慢查询日志中的其他日志信息和所述结构化语句,生成慢查询信息之后,所述方法还包括:
根据所述慢查询日志中的目标执行信息,生成唯一标识;
根据所述唯一标识,将所述慢查询信息存储在预设慢查询数据库中。
7.根据权利要求6所述的方法,其特征在于,所述根据所述慢查询日志中的目标执行信息,生成唯一标识,包括:
根据所述慢查询日志中的语句执行时间、语句执行用户和语句执行主体,通过哈希计算生成所述唯一标识。
8.根据权利要求6所述的方法,其特征在于,所述根据所述唯一标识,将所述慢查询信息存储在预设慢查询数据库中,包括:
判断所述预设慢查询数据库中是否存在所述唯一标识;
若不存在,根据所述唯一标识,将所述慢查询信息存储在所述预设慢查询数据库中。
9.根据权利要求6所述的方法,其特征在于,所述根据所述唯一标识,将所述慢查询信息存储在预设慢查询数据库中,包括:
根据所述结构化语句,生成语句标识;
判断所述预设慢查询数据库中是否存在一组对应的所述唯一标识和所述语句标识;
若不存在,根据所述唯一标识和所述语句标识,将所述慢查询信息存储在所述预设慢查询数据库中。
10.一种慢查询日志处理装置,其特征在于,所述装置包括:
日志获取模块,用于获取预设关系型数据库的慢查询日志;
结构化处理模块,用于对所述慢查询日志中的慢查询语句进行结构化处理,生成结构化语句;
慢查询信息生成模块,用于根据所述慢查询日志中的其他日志信息和所述结构化语句,生成慢查询信息;
异常分析模块,用于若所述预设关系型数据库异常,根据所述慢查询信息对所述预设关系型数据库进行异常原因分析。
11.一种计算机设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的程序指令,当计算机设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述程序指令,以执行如权利要求1至9任一项所述的慢查询日志处理方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至9任一项所述的慢查询日志处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410308888.9A CN118152354A (zh) | 2024-03-18 | 2024-03-18 | 慢查询日志处理方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410308888.9A CN118152354A (zh) | 2024-03-18 | 2024-03-18 | 慢查询日志处理方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118152354A true CN118152354A (zh) | 2024-06-07 |
Family
ID=91284757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410308888.9A Pending CN118152354A (zh) | 2024-03-18 | 2024-03-18 | 慢查询日志处理方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118152354A (zh) |
-
2024
- 2024-03-18 CN CN202410308888.9A patent/CN118152354A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10592545B2 (en) | System for organizing and fast searching of massive amounts of data | |
KR101755365B1 (ko) | 레코드 포맷 정보의 관리 | |
WO2022126983A1 (zh) | 电子报表文件导出方法、装置、设备及存储介质 | |
US20110314060A1 (en) | Markup language based query and file generation | |
CN107797916A (zh) | Ddl语句审核方法和装置 | |
CN113127520A (zh) | 一种基于代理模式的分布式数据库sql审核拦截方法及装置 | |
CN112416904A (zh) | 电力数据规范化处理方法及装置 | |
CN116975116A (zh) | 一种大数据分析系统的数据条件筛选方法 | |
CN117251414B (zh) | 一种基于异构技术的数据存储及处理方法 | |
CN110580170B (zh) | 软件性能风险的识别方法及装置 | |
CN117112656A (zh) | 一种科技志愿服务管理的一体化信息智能管理系统及方法 | |
CN118152354A (zh) | 慢查询日志处理方法、装置、计算机设备及存储介质 | |
CN113377801A (zh) | 数据检验方法、装置、电子设备及计算机存储介质 | |
CN116795663B (zh) | 一种跟踪分析trino引擎执行性能的方法 | |
CN118332009B (zh) | 一种sql数据库性能优化系统及其控制方法 | |
Sigvardsson | Code Cloning Habits Of The Jupyter Notebook Community | |
Zhan et al. | An SG-CIM Verification Method Based on Schema Comparison | |
Zhi et al. | LLM-powered Zero-shot Online Log Parsing | |
EP4124969A1 (en) | Compacted table data files validation | |
CN118409947A (zh) | 一种统计指标准确性的自动化测试方法及系统 | |
CN117493456A (zh) | 一种数据同步方法、装置、设备及介质 | |
CN118035212A (zh) | 一种数据库分页数据处理方法、系统及电子设备 | |
CN117008921A (zh) | 元数据采集方法、电子设备、存储介质 | |
CN118708605A (zh) | 一种借助Excel扩充Oracle ERP查询条件的方法 | |
Sigvardsson | Code Cloning Habits Of The Jupyter Notebook Community: Code Cloning Habits Of The Jupyter Notebook Community |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |