CN115202979A - 一种sql实时监控方法、系统、电子设备及存储介质 - Google Patents
一种sql实时监控方法、系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115202979A CN115202979A CN202210864297.0A CN202210864297A CN115202979A CN 115202979 A CN115202979 A CN 115202979A CN 202210864297 A CN202210864297 A CN 202210864297A CN 115202979 A CN115202979 A CN 115202979A
- Authority
- CN
- China
- Prior art keywords
- sql
- early warning
- preset
- process data
- target sql
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/324—Display of status information
- G06F11/327—Alarm or error message display
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种SQL实时监控方法、系统、电子设备及存储介质,方法包括:在目标SQL被执行时,根据预设配置文件记录目标SQL执行的过程数据;将过程数据推送至预设延时队列中,利用预设线程池中的空闲线程对预设延时队列中的数据进行分析,得到过程数据对应的预警级别;根据目标SQL和预警级别读取预设配置文件中的预警推送规则;根据预警推送规则推送过程数据。本发明通过对目标SQL执行的过程数据使用预设队列和预设线程进行异步处理,从而有效的降低了对执行目标SQL的线程产生影响,并及时发现SQL执行过程中的问题,同时根据预警推送规则对过程数据进行推送,大大的提高了SQL异常问题处理的效率。
Description
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种SQL实时监控方法、系统、电子设备及存储介质。
背景技术
数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的结合,数据库的存储空间随着计算内存的大小可以扩展的很大,足以存放数以亿计的数据,但是数据库并不是随意的将数据进行存储,而是有一定的规则,否则查询的效率会很低。
随着大数据的高速发展,业务量的逐步增加,数据库的数据量也会成比例增长,原本不会出问题的SQL(Structured Query Language,结构化的查询语言)执行脚本,也会慢慢暴露出问题,因此,如何对 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为本发明提供的一种SQL实时监控方法流程图;
图2为本发明提供的SQL脚本问题处理的详细流程图;
图3为本发明提供的配置文件中配置优先级判断方法流程图;
图4为本发明提供的SQL脚本执行过程的示意图;
图5为本发明提供的一种SQL实时监控插件数据处理流程图;
图6为本发明提供的SQL执行的过程数据分析流程示意图;
图7为本发明提供的一种可能的分析结果处理流程示意图;
图8为现有SQL脚本问题处理流程的示意图;
图9为本发明提供的SQL脚本问题处理流程图的示意图;
图10为本发明提供的一种SQL实时监控系统结构示意图;
图11为本发明提供的一种可能的电子设备的硬件结构示意图;
图12为本发明提供的一种可能的计算机可读存储介质的硬件结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
图1为本发明提供的一种SQL实时监控方法流程图,如图1所示,方法包括:
步骤S100:在目标SQL被执行时,根据预设配置文件记录所述目标SQL执行的过程数据;
需要说明的是,本实施例方法的执行主体可以是具有数据处理、网络通信及程序运行功能的计算机终端设备,例如:电脑、平板电脑等;也可以是具有相同相似功能的服务器设备,还可以是具有相似功能的云服务器,本实施例对此不做限制。为了便于理解,本实施例及下述各实施例将以服务器设备为例进行说明。
可以理解的是,上述预设配置文件中的配置项至少包括:超时时间、预警级别、事务状态和预警接收人信息;上述配置文件可以是在系统初始化时自动默认进行配置的,也可以是由管理员手动根据业务需求进行配置的,本实施例对此不作限制。
应理解的是,上述过程数据可以是上述目标SQL在被执行前、执行中和执行完成后产生的数据,其中上述目标SQL在被执行前产生的数据可以包括:目标SQL的执行计划、是否开启事务、配置信息、SQL 查询条件、查询参数和/或开始执行时间等;执行中产生的数据可以包括:服务器内存使用情况、CPU使用率、数据库产生的日志信息等;执行完成后产生的数据可以包括:目标SQL的执行时间、执行结果、反馈的数据量大小等,本实施例对此不作限制。
步骤S200:将所述过程数据推送至预设延时队列中,利用预设线程池中的空闲线程对所述预设延时队列中的数据进行分析,得到所述过程数据对应的预警级别;
需要说明的是,上述预设延时队列可以是用于临时存放上述过程数据的延时队列,且在存在多个目标SQL同时执行时,上述延时队列用于对上述过程数据的处理顺序进行排序,其队列任务执行方式可以是“先进后出”。
可以理解的是,上述预设线程池可以是一个固定大小的线程池,也可以是根据服务器性能动态调整大小的线程池,上述预设线程池可以是在系统初始化时创建的,也可以是在系统初始化后第一次调用线程池处理上述预设延时队列中数据中创建的,本实施例对此不作限制。
应理解的是,上述预警级别可以是根据上述过程数据中的特定参数分析得到的,例如:目标SQL日志文件中的日志类型、目标SQL执行完成时的时长等,本实施例对此不作限制。上述预警级别可以包括:调试级别(debug)、警告级别(warning)和/或错误级别(error)等,本实施例对此不作限制。
步骤S300:根据所述目标SQL和所述预警级别读取所述预设配置文件中的预警推送规则;
需要说明的是,上述预设配置文件中存储有目标SQL和预警级别与预警推送规则的唯一对应关系,也即通过目标SQL和预警级别可以在配置文件中找到唯一对应的预警推送规则,上述预警推送规则用于提供开发人员的通知信息,例如:通知的服务名、邮件通知和/或短信通知、通知发送的详情等,本实施例对此不作限制。
步骤S400:根据所述预警推送规则推送所述过程数据。
可以理解的是,基于背景技术中的缺陷,本发明实施例提出了一种SQL实时监控方法。方法包括:在目标SQL被执行时,根据预设配置文件记录上述目标SQL执行的过程数据;将上述过程数据推送至预设延时队列中,利用预设线程池中的空闲线程对上述预设延时队列中的数据进行分析,得到上述过程数据对应的预警级别;根据上述目标SQL和上述预警级别读取上述预设配置文件中的预警推送规则;根据上述预警推送规则推送上述过程数据。本发明通过在目标SQL被执行时记录目标SQL的执行过程数据,并将上述过程数据推送到预设延时队列中,通过预设处理队列和预设线程池对上述过程数据进行异步处理,得到对应的预警级别,从而可以有效降低对SQL执行线程的影响,及时发现SQL执行过程中的问题,并通过目标SQL和预警级别匹配对应的预警推送规则,根据预警推送规则完成过程数据推送,从而可以通过配置文件简单的配置,即可对SQL脚本执行情况进行实时监控,并且根据目标SQL的预警级别及时将需要预警的目标SQL执行的过程数据按预警推送规则推送到指定的人,进而减少了SQL异常处理过程中的信息传达步骤,降低了信息传达过程中的遗漏,大大的提高了SQL 异常问题处理的效率。
在一种可能的实施例方式中,所述根据预设配置文件记录所述目标SQL执行的过程数据的步骤,包括:
步骤S101:读取所述预设配置文件中所述目标SQL对应的超时时长阈值;
需要说明的是,上述超时时长阈值可以是用于判断上述目标SQL 执行时长是否正常的阈值,通常情况下不同复杂程度的SQL其执行时长不一样,同一个SQL在不同的数据量中查询符合条件的数据其执行时长也不一样,故而上述超时时长可以是根据每个目标SQL单独设定的,其设定方式可以是管理员手动设定的,也可以是系统统计目标SQL 的平均执行时长定期更新的,本实施例对此不作限制。
步骤S102:根据所述超时时长阈值获取所述目标SQL的执行状态;
需要说明的是,上述执行状态可以包括:正常、超时和/或正常但超过超时时长阈值的80%等,本实施例对此不作限制。
步骤S103:在所述执行状态为正常时,记录所述目标SQL执行的过程数据。
本实施例方法中,通过记录执行状态为正常的目标SQL的过程数据,将过程数据进行合理分类,从而可以有效的为后续SQL问题排查时提供数据参考。
在一种可能的实施例方式中,所述利用预设线程池中的空闲线程对所述预设延时队列中的数据进行分析的步骤,包括:
步骤S201:在所述执行状态为正常时且所述目标SQL的完成时长大于预置阈值时,分析所述目标SQL的多个关键参数,生成分析结果。
需要说明的是,上述预置阈值可以是根据上述超时时长阈值设定的,例如:上述预置阈值可以是上述超时时长阈值的80%;也可以是根据上述目标SQL的平均执行时长设定的,本实施例对此不作限制。
可以理解的是,上述目标SQL的多个关键参数可以包括:目标SQL 的置信结束时间、执行时长、查询或更新的数据量、检索的总数据量和/或使用的索引情况等,本实施例对此不作限制。
应理解的是,上述多个关键参数可以用于对SQL执行问题进行分析的重要参数,并且可在问题分析完成后,用于验证优化SQL与数据结构后的优化效果。
在本实施例中,通过对正常执行完成且执行时长超过预设阈值的目标SQL的过程数据进行分析,生成分析结果,从而可以有效的对当前业务环境中数据量查询或更新正常的SQL进行监控,降低在业务环境中数据量爆发式增长后出现SQL执行异常的发生频率,大大的提高了用户体验。
在一种可能的实施例方式中,所述分析所述目标SQL的多个关键参数,生成分析结果的步骤,包括:
步骤S202:获取所述目标SQL的多个关键参数,所述多个关键参数至少包括:查询或更新的数据量和索引使用情况;
步骤S203:根据所述查询或更新的数据量和所述索引使用情况,生成索引创建推荐信息。
在具体实现中,根据上述查询或更新的数据量和上述索引使用情况,从而统计出查询或更新数据量较大且未走索引的查询字段,生成索引创建推荐信息
在本实施例中,通过根据查询或更新的数据量和索引使用情况生成索引创建推荐信息,从而可以自动统计出需要创建索引的表和字段,进而提高SQL的执行效率。
在一种可能的实施例方式中,所述的SQL实时监控方法,还包括:在所述执行状态为超时时,中断所述目标SQL的执行过程,并抛出异常提醒。
在本实施例中,通过在执行状态为超时,中断上述目标SQL的执行过程并抛出异常提醒,从而可以有效的降低目标SQL过长时间的占用数据库连接池资源,导致服务器出现内存溢出、CPU使用率过高的问题。
在一种可能的实施例方式中,所述过程数据至少包括:目标SQL 的执行计划、目标SQL的执行时间、是否开启事务、配置信息和执行结果。
在一种可能的实施例方式中,所述预设配置文件中配置项至少包括:超时时间、预警级别、事务状态和预警接收人信息。
在一种可能的应用场景中,为了进一步说明本发明实施例中SQL 脚本问题处理的详细流程,参见图2,图2为本发明提供的SQL脚本问题处理的详细流程图;本发明方法可以定制为一个服务器插件,在本发明方法执行的之前,需要在服务器的服务中引入插件,并添加必要的配置,如:重点监控Mapper(映射层)、监控参数等,同时配置完成后需要启动上述服务,在业务端发起数据查询或更新请求时,线程进入ORM(Object Relational Mapping对象关系映射)层中已配置监控的Mapper或Dao(Data Access Object数据访问对象)层时,监视开始生效;上述插件通过AOP方式切入,在SQL执行之前,异步获取各项SQL参数,例如:SQL详情、事务状态和SQL执行计划(explain SQL);并从配置文件中获取目标SQL的预设的超时时间,校验目标 SQL是否执行完成,在目标SQL执行完成时,统计SQL执行的各项数据,如:执行时长、查询的数据量、引用索引情况,并将该数据发送到数据存储服务中便于查询;若目标SQL未执行完成,则校验执行时长是否超过预设时间,若未超时则继续校验目标SQL是否执行完成,若已经超时则强制切断该线程请求,结束该目标SQL的执行,返回系统异常,并将系统异常也存储在数据存储服务中,获取数据存储服务器中的配置信息,包括:服务名、负责人邮件信息、异常等级等;对于达到上述渔场等级的信息实时同步给开发负责人,并有开发负责人来处理异常,并将处理结果同步给运维或DBA(数据库管理员)。
在上述应用场景中,上述服务中引入插件,可以是通过配置引入的,通过配置文件配置需要监控的详情,包括:全局配置、类配置、方法配置,例如:
全局配置:
sql.monitor.route=com.xxx.mapper.*,com.bbb.mapper.*
Sql.monitor.timeout=300
Sql.monitor.send.data=true
Sql.transction.status=true
Sql.error.level=warning
个性化配置,指定到某个具体类:
com.xxx.mapper.xxxxMapper.Sql.monitor.timeout=300
com.xxx.mapper.xxxxMapper.Sql.monitor.send.data=true
com.xxx.mapper.xxxxMapper.Sql.transction.status=true
com.xxx.mapper.xxxxMapper.Sql.error.level=warning
个性化配置,指定到某个具体的方法:
com.xxx.mapper.xxxxMapper.queryList.Sql.monitor.timeout=300
com.xxx.mapper.xxxxMapper.queryList.Sql.monitor.send.data=true
com.xxx.mapper.xxxxMapper.queryList.Sql.transction.status=true
com.xxx.mapper.xxxxMapper.queryList.Sql.error.level=warning
需要说明的是,sql.monitor.route为配置路径,用于配置需要监控的路径,可以配置多个目录使用英文逗号分隔,比如:com.xxx.mapper.*,为目录com.xxx.mapper下所有文件,其中*为通配符。
com.xxx.mapper.xxxxMapper为com.xxx.mapper目录下名为 xxxxMapper的类文件,com.xxx.mapper.xxxxMapper.queryList为类文件 xxxxMapper中的queryList方法。
Sql.monitor.timeout是设置的sql执行超时时间,即sql执行超过该超时时间,会中断该线程的sql执行,同时给出对应的异常提示,防止因为sql执行过长占用数据库连接池资源,或者查询数据量过大导致服务器出现内存溢出,cpu使用率过高。
Sql.monitor.send.data主要设置是否发送sql数据到数据存储服务中,同时在数据存储服务中可以配置开发人员的通知信息,比如通知的服务名,邮件通知,还是短信通知,通知发送的详情。
Sql.transction.status是否获取当前sql执行事务状态,该配置便于开发人员进行异常分析通过 TransactionSynchronizationManager.isActualTransactionActive()方法获取事务开启状态。
Sql.error.level配置异常级别,异常级别区分sql执行异常的严重程度,便于开发人员根据异常的严重程度优先处理哪些问题,默认配置为警告级别。
Sql.error.level包含debug,warning,error三个级别:
Debug:记录所有拦截到的请求,并发送提醒;
Warning:记录拦截超过Sql.monitor.timeout设置值80%的请求并发送提醒;
Error:记录超过Sql.monitor.timeout的请求并发送提醒。
可以理解的是,在上述配置项还包括一个默认的优先级,参见图3,图3为本发明提供的配置文件中配置优先级判断方法流程图,在上述可能的应用场景中,在通过目标SQL获取对应的配置参数时,首先是判断上述目标SQL对应的方法是否有方法级别的配置,如有则使用方法级别的配置,如没有,则判断是否有目标SQL对应的类(class)级别的配置,如有则使用类级别的配置,如没有,则判断是否有全局配置,如有则使用全局配置;通过使用获取到的配置执行监控逻辑,若配置文件中没有配置对应的配置项,则直接结束不执行监控,可以理解的是,上述配置可以放在apollo(阿波罗)配置中心,动态刷新配置,可以做到无需重启动态调整配置。
在一种可能的应用场景中,还包括SQL执行超时时的执行过程,参见图4,图4为本发明提供的SQL脚本执行过程的示意图;在上述可能的应用场景中,在获取到目标SQL被执行且获取数据库连接池中的连接时,获取上述目标SQL的超时时间,并将上述目标SQL的信息推送到守护线程延时队列中,并设置延时时间为超时时间,同时上述目标SQL开始被执行,在目标SQL在超时时间内正常执行完成时,删除延时队列中的任务;当目标SQL在达到超时时间时还未完成执行时,守护线程执行延时任务,直接终端目标SQL的执行,结束本次查询并抛出异常。例如:设置超时时间为5秒时,当前线程在5秒内没有给出查询结果,则监控中的守护线程强制结束还在执行中的线程,并抛出异常提醒给开发者,让开发者重点关注并及时跟进处理。
在上述应用场景中,如果sql在约定时间内正常执行完毕,执行的相关情况便开始进行统计,如执行的结束时间,执行时长,查询或更新的数据量,检索的总数据量,使用的索引情况等,这些都是便于后期分析的重要参数,待问题分析后,优化sql与数据结构后重新执行请求时验证优化效果。
然后校验是否配置了详情发送,如果配置了,之前封装的数据都需要统一发送到数据存储服务中进行保存,数据存储服务根据约定的数据结构进行解析后保存,校验数据的预警类型,如果达到设置的预警的级别,则根据配置的信息系统自动实时发送异常预警到开发者的邮箱,根据执行的详细数据,执行计划,sql与参数来分析具体问题,更快捷的整理出优化思路。其中,采集的监控信息有:SQL执行计划、 SQL执行时间、是否开启事务、配置信息(超时时间、类、方法名、处理等级、是否发送数据)和执行结果(正常还是超时)。
在一种可能的应用场景中,还包括一种SQL实时监控插件的数据处理逻辑,参见图5,图5为本发明提供的一种SQL实时监控插件数据处理流程图,首先在服务器中引入插件,并添加必要的配置(重点监控Mapper、Dao层超时时间等配置参数),当业务端请求进入到ORM 层时,判断是否与配置的Mapper或Dao匹配,在不匹配时则不走实时监控逻辑,若匹配,则启动监控,并获取目标SQL的相关信息,包括:获取当前数据库连接、获取当前要执行的SQL与参数、获取当前事务状态、生成explain sql语句和执行explain sql获取执行结果,记录执行计划,将上述目标SQL的相关信息推送到超时监控队列(即延时队列),并开始执行目标SQL,当目标SQL正常执行完成后,直接删除超时监控队列中超时监控任务,若为执行完成则继续执行,上述超时监控队列用于监控超时的请求,并强制结束查询,上述监控队列在接收到目标SQL的数据后启动守护线程延时队列进行异步处理,上述延时队列的特性是到了超时时间才会对队列中的目标SQL进行处理,超时队列对应的后台线程池定时拉取到时间的请求连接,并将到了超时时间还没执行完成的请求直接强制关闭。同时记录目标SQL执行过程中的数据信息,包括执行时长、执行时间、执行计划指标数据、执行SQL 与参数和事务状态,并将上述数据信息推送给预设固定的线程池进行异步处理,生成监控结果。
在一种可能的应用场景中,还包括处理监控结果的线程池逻辑,参见图6,图6为本发明提供的SQL执行的过程数据分析流程示意图;在上述应用场景中,守护线程延时队列(也称监控采集信息队列)从预设固定大小的线程池中获取空闲线程对上述延时队列中的SQL数据信息进行处理,包括:
获取延时队列中的监控采集信息(也即上述SQL执行的过程数据),并存储到数据库(Data BaseDB)中,并根据配置的超时时间与实际执行时间比较,判断目标SQL执行是否超时且将结果转换成对应的结果级别:若超时则为error级别、若未超时且置信时间大于设置超时时间的80%为warning和不满足上面两种的为debug级别,根据上述结果级别获取对应的预警级别包括:debug级别会处理(error、warning、debug 级别监控)、warning级别会处理(error、warning级别监控)、error 级别会处理(error级别监控),并通过配置文件中判断目标SQL是否配置了发送过程数据信息,若是则根据采集内容(过程数据)生成邮件并发送邮件消息;同时还可以根据数据库信息生成对应的宝宝信息,包括:按类和方法统计不同时间段内的请求耗时占比、分析不同级别的请求数据参数情况和根据置信计划查看慢查询中的字段是否走了索引。
在一种可能的应用场景中,还包括根据过程数据中自动优化索引的方法,参见图7,图7为本发明提供的一种可能的分析结果处理流程示意图。首选获取数据库中error级别涉及到的数据库表,并通过循环处理上述数据库表,对单个表中出现查询慢的SQL里面用到的查询字段判断上述字段是否有索引,若有则直接跳过结束本方法,若没有,则查询物索引字段的参数重复率和查询次数,当重复率高于50%时跳过结束本方法,若低于20%则自动创建索引,若重复率在20%~50%之间则生产推荐创建索引信息,推送到人工进行审批,在审批通过后创建索引,在审批拒绝时不创建索引。
在上述场景中,通过使用本发明方法可以有效的减少运维和DBA 中间传达过程中的信息丢弃,大大的提高SQL数据处理问题的效率,参见图8,图8为现有SQL脚本问题处理流程的示意图,在现有的SQL 脚本问题处理流程中,业务服务器(business server)对数据库(DataBase) 执行增删改查(CRUD)后,数据库将结果(RESULT)返回给业务服务器时,当出现ERROR/EXCEPTION信息时,需要将上述信息先发送给运维或DBA,再有运维或DBA将上述信息转发至开发者 (Developere),并由开发改进优化后提交给运维或DBA更新至服务器上。而使用本发明方法后,参见图9,图9为本发明提供的SQL脚本问题处理流程图的示意图,在业务服务器中配置根据本发明提供的 SQL监控插件,ERROR/EXCEPTION信息会直接发送至开发者,并有开发者进行改进优化,并由开发改进优化后提交给运维或DBA更新至服务器上。从而降低了对于运维或DBA的依赖性,且由于减少了运维或DBA中间传递的环境,大大的提高了问题处理的及时性,提升了用户体验。
请参阅图10,图10为本发明实施例提供的一种SQL实时监控系统结构图示意图,如图10所示,一种SQL实时监控系统,包括过程记录模块100、预警分析模块200、规则获取模块300和预警推送模块 400,其中:
过程记录模块100,用于在目标SQL被执行时,根据预设配置文件记录所述目标SQL执行的过程数据;预警分析模块200,用于将所述过程数据推送至预设延时队列中,利用预设线程池中的空闲线程对所述预设延时队列中的数据进行分析,得到所述过程数据对应的预警级别;规则获取模块300,用于根据所述目标SQL和所述预警级别读取所述预设配置文件中的预警推送规则;预警推送模块400,用于根据所述预警推送规则推送所述过程数据。
可以理解的是,本发明提供的一种SQL实时监控系统与前述各实施例提供的SQL实时监控方法相对应,SQL实时监控系统的相关技术特征可参考SQL实时监控方法的相关技术特征,在此不再赘述。
请参阅图11,图11为本发明实施例提供的电子设备的实施例示意图。如图11所示,本发明实施例提供了一种电子设备,包括存储器1310、处理器1320及存储在存储器1310上并可在处理器1320上运行的计算机程序1311,处理器1320执行计算机程序1311时实现以下步骤:
在目标SQL被执行时,根据预设配置文件记录上述目标SQL执行的过程数据;将上述过程数据推送至预设延时队列中,利用预设线程池中的空闲线程对上述预设延时队列中的数据进行分析,得到上述过程数据对应的预警级别;根据上述目标SQL和上述预警级别读取上述预设配置文件中的预警推送规则;根据上述预警推送规则推送上述过程数据。
请参阅图12,图12为本发明提供的一种计算机可读存储介质的实施例示意图。如图12所示,本实施例提供了一种计算机可读存储介质 1400,其上存储有计算机程序1411,该计算机程序1411被处理器执行时实现如下步骤:
在目标SQL被执行时,根据预设配置文件记录上述目标SQL执行的过程数据;将上述过程数据推送至预设延时队列中,利用预设线程池中的空闲线程对上述预设延时队列中的数据进行分析,得到上述过程数据对应的预警级别;根据上述目标SQL和上述预警级别读取上述预设配置文件中的预警推送规则;根据上述预警推送规则推送上述过程数据。
本发明提供的一种SQL实时监控方法、系统、电子设备及存储介质,方法包括:在目标SQL被执行时,根据预设配置文件记录上述目标SQL执行的过程数据;将上述过程数据推送至预设延时队列中,利用预设线程池中的空闲线程对上述预设延时队列中的数据进行分析,得到上述过程数据对应的预警级别;根据上述目标SQL和上述预警级别读取上述预设配置文件中的预警推送规则;根据上述预警推送规则推送上述过程数据。本发明通过在目标SQL被执行时记录目标SQL的执行过程数据,并将上述过程数据推送到预设延时队列中,通过预设处理队列和预设线程池对上述过程数据进行异步处理,得到对应的预警级别,从而可以有效降低对SQL执行线程的影响,及时发现SQL执行过程中的问题,并通过目标SQL和预警级别匹配对应的预警推送规则,根据预警推送规则完成过程数据推送,从而可以通过配置文件简单的配置,即可对SQL脚本执行情况进行实时监控,并且根据目标SQL 的预警级别及时将需要预警的目标SQL执行的过程数据按预警推送规则推送到指定的人,进而减少了SQL异常处理过程中的信息传达步骤,降低了信息传达过程中的遗漏,大大的提高了SQL异常问题处理的效率。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (10)
1.一种SQL实时监控方法,其特征在于,所述方法包括:
在目标SQL被执行时,根据预设配置文件记录所述目标SQL执行的过程数据;
将所述过程数据推送至预设延时队列中,利用预设线程池中的空闲线程对所述预设延时队列中的数据进行分析,得到所述过程数据对应的预警级别;
根据所述目标SQL和所述预警级别读取所述预设配置文件中的预警推送规则;
根据所述预警推送规则推送所述过程数据。
2.根据权利要求1所述的SQL实时监控方法,其特征在于,所述根据预设配置文件记录所述目标SQL执行的过程数据的步骤,包括:
读取所述预设配置文件中所述目标SQL对应的超时时长阈值;
根据所述超时时长阈值获取所述目标SQL的执行状态;
在所述执行状态为正常时,记录所述目标SQL执行的过程数据。
3.根据权利要求2所述的SQL实时监控方法,其特征在于,所述利用预设线程池中的空闲线程对所述预设延时队列中的数据进行分析的步骤,包括:
在所述执行状态为正常时且所述目标SQL的完成时长大于预置阈值时,分析所述目标SQL的多个关键参数,生成分析结果。
4.根据权利要求3所述的SQL实时监控方法,其特征在于,所述分析所述目标SQL的多个关键参数,生成分析结果的步骤,包括:
获取所述目标SQL的多个关键参数,所述多个关键参数至少包括:查询或更新的数据量和索引使用情况;
根据所述查询或更新的数据量和所述索引使用情况,生成索引创建推荐信息。
5.根据权利要求2所述的SQL实时监控方法,其特征在于,还包括:
在所述执行状态为超时时,中断所述目标SQL的执行过程,并抛出异常提醒。
6.根据权利要求1所述的SQL实时监控方法,其特征在于,所述过程数据至少包括:目标SQL的执行计划、目标SQL的执行时间、是否开启事务、配置信息和执行结果。
7.根据权利要求1所述的SQL实时监控方法,其特征在于,所述预设配置文件中配置项至少包括:超时时间、预警级别、事务状态和预警接收人信息。
8.一种SQL实时监控系统,其特征在于,包括
过程记录模块,用于在目标SQL被执行时,根据预设配置文件记录所述目标SQL执行的过程数据;
预警分析模块,用于将所述过程数据推送至预设延时队列中,利用预设线程池中的空闲线程对所述预设延时队列中的数据进行分析,得到所述过程数据对应的预警级别;
规则获取模块,用于根据所述目标SQL和所述预警级别读取所述预设配置文件中的预警推送规则;
预警推送模块,用于根据所述预警推送规则推送所述过程数据。
9.一种电子设备,其特征在于,包括存储器、处理器,所述处理器用于执行存储器中存储的计算机管理类程序时实现如权利要求1-7任一项所述的SQL实时监控方法的步骤。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机管理类程序,所述计算机管理类程序被处理器执行时实现如权利要求1-7任一项所述的SQL实时监控方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210864297.0A CN115202979A (zh) | 2022-07-20 | 2022-07-20 | 一种sql实时监控方法、系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210864297.0A CN115202979A (zh) | 2022-07-20 | 2022-07-20 | 一种sql实时监控方法、系统、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115202979A true CN115202979A (zh) | 2022-10-18 |
Family
ID=83583295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210864297.0A Pending CN115202979A (zh) | 2022-07-20 | 2022-07-20 | 一种sql实时监控方法、系统、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115202979A (zh) |
-
2022
- 2022-07-20 CN CN202210864297.0A patent/CN115202979A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107678907B (zh) | 数据库业务逻辑监控方法、系统、及存储介质 | |
US20180365085A1 (en) | Method and apparatus for monitoring client applications | |
US8938421B2 (en) | Method and a system for synchronizing data | |
US10459915B2 (en) | Managing queries | |
US20060048155A1 (en) | Organizing transmission of repository data | |
CN111125444A (zh) | 大数据任务调度管理方法、装置、设备及存储介质 | |
JP2017515180A (ja) | ビッグ・データ・リポジトリにおけるデータ・セットの処理 | |
CN111324606B (zh) | 数据分片的方法及装置 | |
AU2021244852B2 (en) | Offloading statistics collection | |
US20180004797A1 (en) | Application resiliency management using a database driver | |
CN112685499A (zh) | 一种工作业务流的流程数据同步方法、装置及设备 | |
CN113485999A (zh) | 数据清理方法、装置和服务器 | |
CN107632926B (zh) | 业务数量统计方法、装置、设备及计算机可读存储介质 | |
US11243979B1 (en) | Asynchronous propagation of database events | |
CN111522870A (zh) | 数据库访问方法、中间件和可读存储介质 | |
US20230244687A1 (en) | Optimization of Virtual Warehouse Computing Resource Allocation | |
CN115202979A (zh) | 一种sql实时监控方法、系统、电子设备及存储介质 | |
CN112100186B (zh) | 基于分布式系统的数据处理方法、装置、计算机设备 | |
US11243857B2 (en) | Executing test scripts with respect to a server stack | |
CN113722141A (zh) | 数据任务的延迟原因确定方法、装置、电子设备及介质 | |
EP3436972A1 (en) | Multiform persistence abstraction | |
US7721287B2 (en) | Organizing transmission of repository data | |
US20230259446A1 (en) | PERFORMANCE TEST ENVIRONMENT FOR APIs | |
US20230244538A1 (en) | Optimization of Virtual Warehouse Computing Resource Allocation | |
CN117389841B (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 |