CN110263129A - 基于Mybatis框架进行慢查询操作统计的方法 - Google Patents
基于Mybatis框架进行慢查询操作统计的方法 Download PDFInfo
- Publication number
- CN110263129A CN110263129A CN201910554874.4A CN201910554874A CN110263129A CN 110263129 A CN110263129 A CN 110263129A CN 201910554874 A CN201910554874 A CN 201910554874A CN 110263129 A CN110263129 A CN 110263129A
- Authority
- CN
- China
- Prior art keywords
- inquiry operation
- mybatis
- carrying
- performance objective
- query
- 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
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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
Abstract
本发明提出一种基于Mybatis框架进行慢查询操作统计的方法,属于数据库技术领域。本发明解决了目前软件程序执行过程中,定位慢查询较为繁琐的问题,其技术方案要点为:定义慢查询时间阈值;获取执行目标查询操作之前的时间;执行目标查询操作;获取执行目标查询操作之后的时间;计算目标查询操作的整体执行时间,如果大于阈值,则获取执行对象,文件存储对应的慢查询语句。本发明通过对数据库操作时长大于指定时间的查询操作进行查询统计,迅速定位影响程序正常运行的业务功能模块,对相应的操作进行优化,提升系统执行效率。
Description
技术领域
本发明涉及数据库技术,特别涉及基于Mybatis框架进行慢查询操作统计的方法的技术。
背景技术
在软件开发过程中,与数据库进行交互是软件程序最为重要的一个节点,在进行数据库的操作过程中,数据库操作时长是衡量程序性能的一个重要指标,同时也是影响用户感知度的一个重要参考值。
在目前的数据库慢查询统计中,目前主要使用2种统计方案:
1、程序执行日志查询统计,程序日志包含了所有执行动作。通过去海量日志记录中,定位慢查询。该方案弊端在于要通过海量的日志记录去定位慢查询,会消耗大量的人工时间,且存在部分数据遗漏统计的风险。
2、通过数据库本身的查询统计进行慢查询统计。该方案的弊端在于,数据库服务器需要开启相应的权限,并且需要专业人员进行操作,限制了普通开发人员的定位操作。
发明内容
本发明的目的是提供一种基于Mybatis框架进行慢查询操作统计的方法,解决目前软件程序执行过程中,定位慢查询较为繁琐的问题。
本发明解决其技术问题,采用的技术方案是:基于Mybatis框架进行慢查询操作统计的方法,包括如下步骤:
步骤1、定义慢查询时间阈值;
步骤2、获取执行目标查询操作之前的时间;
步骤3、执行目标查询操作;
步骤4、获取执行目标查询操作之后的时间;
步骤5、计算目标查询操作的整体执行时间,如果大于阈值,则获取执行对象,文件存储对应的慢查询语句。
具体的是,步骤3中,在执行目标查询操作时,通过动态代理方式,对执行目标查询操作进行增强处理。
进一步的是,在步骤1之前,还包括如下步骤:
a、在项目中增加mybtais组件对应jar,版本在3.0及以上;
b、在项目中自定义java类SlowSqlCountPlugin,实现Interceptor接口;
c、确定拦截签名,即在自定义类上指定签名;
d、在自定义类的intercept方法中实现业务逻辑代码;
e、在项目中mybatis-config配置文件中加入插件配置。
具体的是,步骤b中,Interceptor接口是mybatis提供的用于插件开发的接口,里面有3个方法需要开发者自定义实现逻辑方法,具体为:
intercept:业务逻辑实现,对mybatis的操作进行拦截增强处理,实现自定义的业务逻辑处理;
plugin:拦截器用于封装目标对象的,通过该方法返回目标对象本身,或返回一个它的代理,当返回的是代理的时候能够对其中的方法进行拦截来调用intercept方法;
setProperties:读取配置文件,用于业务逻辑方法所需要的参数配置。
进一步的是,步骤c中,确定拦截签名时,在自定义的拦截类中,需要明确指出具体执行类的执行方法进行拦截。
具体的是,所述指定拦截的类为StatementHandler,指定的拦截方法为query查询方法。
本发明的有益效果是,通过上述基于Mybatis框架进行慢查询操作统计的方法,通过对数据库操作时长大于指定时间的查询操作进行查询统计,迅速定位影响程序正常运行的业务功能模块,对相应的操作进行优化,提升系统执行效率,并且,本发明在对慢查询操作定位统计时,不需要专业人员去数据库服务器进行操作,普通开发人员即可针对性的做出相应的优化处理。
同时,本发明只需要在项目中进行简单的编码工作,不需要专业人员进行数据库进行监控操作,减轻原本的在海量日志中进行查询语句定位工作,大量减少了开发及运维人员工作量,提高了工作效率。
附图说明
图1为本发明基于Mybatis框架进行慢查询操作统计的方法的流程图。
具体实施方式
下面结合附图,详细描述本发明的技术方案。
本发明所述基于Mybatis框架进行慢查询操作统计的方法,其流程图参见图1,其中,该方法包括如下步骤:
步骤1、定义慢查询时间阈值。
步骤2、获取执行目标查询操作之前的时间。
步骤3、执行目标查询操作。
步骤4、获取执行目标查询操作之后的时间。
步骤5、计算目标查询操作的整体执行时间,如果大于阈值,则获取执行对象,文件存储对应的慢查询语句。
上述方法的步骤3中,在执行目标查询操作时,可以通过动态代理方式,对执行目标查询操作进行增强处理。
并且,在步骤1之前,还可以包括如下步骤:
a、在项目中增加mybtais组件对应jar,版本在3.0及以上,能够保证组件的兼容性和运行效率。
b、在项目中自定义java类SlowSqlCountPlugin,实现Interceptor接口。
c、确定拦截签名,即在自定义类上指定签名。
d、在自定义类的intercept方法中实现业务逻辑代码。
e、在项目中mybatis-config配置文件中加入插件配置。
上述方法的步骤b中,Interceptor接口是mybatis提供的用于插件开发的接口,里面有3个方法需要开发者自定义实现逻辑方法,具体为:
intercept:业务逻辑实现,对mybatis的操作进行拦截增强处理,实现自定义的业务逻辑处理。本发明的主要业务逻辑在该方法中实现。
plugin:拦截器用于封装目标对象的,通过该方法我们可以返回目标对象本身,也可以返回一个它的代理。当返回的是代理的时候我们可以对其中的方法进行拦截来调用intercept方法。
setProperties:读取配置文件,用于业务逻辑方法所需要的参数配置。
步骤c中,确定拦截签名时,在自定义的拦截类中,需要明确指出具体执行类的执行方法进行拦截。在本发明中,指定拦截的类为StatementHandler,指定的拦截方法为query查询方法。
StatementHadler类:作用是使用数据库的Statement或PrepareStatement执行操作,启承上启下作用。
query方法:所有的查询数据库方法都会统一从该方法查询。
Statement参数:对应的操作数据库的statement或者prepareSatement实际对象。
ResultHandler:操作完数据库后,对返回结果进行统一映射处理的类。
并且,将自定义的拦截器类配置在项目中,在程序执行数据库查询的操作过程中,执行statementHandler类对应的query方法时,会扫描对statementHandler类所有的拦截类,执行对应的自定义方法。
在程序执行过程中,所有查询语句如果超过既定设置阈值的时长,会针对性的保存相关语句,对应开发人员及运维人员可根据对应的查询语句进行对应调优。
Claims (6)
1.基于Mybatis框架进行慢查询操作统计的方法,其特征在于,包括如下步骤:
步骤1、定义慢查询时间阈值;
步骤2、获取执行目标查询操作之前的时间;
步骤3、执行目标查询操作;
步骤4、获取执行目标查询操作之后的时间;
步骤5、计算目标查询操作的整体执行时间,如果大于阈值,则获取执行对象,文件存储对应的慢查询语句。
2.根据权利要求1所述的基于Mybatis框架进行慢查询操作统计的方法,其特征在于,步骤3中,在执行目标查询操作时,通过动态代理方式,对执行目标查询操作进行增强处理。
3.根据权利要求1所述的基于Mybatis框架进行慢查询操作统计的方法,其特征在于,在步骤1之前,还包括如下步骤:
a、在项目中增加mybtais组件对应jar,版本在3.0及以上;
b、在项目中自定义java类SlowSqlCountPlugin,实现Interceptor接口;
c、确定拦截签名,即在自定义类上指定签名;
d、在自定义类的intercept方法中实现业务逻辑代码;
e、在项目中mybatis-config配置文件中加入插件配置。
4.根据权利要求3所述的基于Mybatis框架进行慢查询操作统计的方法,其特征在于,步骤b中,Interceptor接口是mybatis提供的用于插件开发的接口,里面有3个方法需要开发者自定义实现逻辑方法,具体为:
intercept:业务逻辑实现,对mybatis的操作进行拦截增强处理,实现自定义的业务逻辑处理;
plugin:拦截器用于封装目标对象的,通过该方法返回目标对象本身,或返回一个它的代理,当返回的是代理的时候能够对其中的方法进行拦截来调用intercept方法;
setProperties:读取配置文件,用于业务逻辑方法所需要的参数配置。
5.根据权利要求3所述的基于Mybatis框架进行慢查询操作统计的方法,其特征在于,步骤c中,确定拦截签名时,在自定义的拦截类中,需要明确指出具体执行类的执行方法进行拦截。
6.根据权利要求5所述的基于Mybatis框架进行慢查询操作统计的方法,其特征在于,所述指定拦截的类为StatementHandler,指定的拦截方法为query查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910554874.4A CN110263129A (zh) | 2019-06-25 | 2019-06-25 | 基于Mybatis框架进行慢查询操作统计的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910554874.4A CN110263129A (zh) | 2019-06-25 | 2019-06-25 | 基于Mybatis框架进行慢查询操作统计的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110263129A true CN110263129A (zh) | 2019-09-20 |
Family
ID=67921301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910554874.4A Pending CN110263129A (zh) | 2019-06-25 | 2019-06-25 | 基于Mybatis框架进行慢查询操作统计的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110263129A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930811A (zh) * | 2020-10-09 | 2020-11-13 | 绿漫科技有限公司 | 一种基于MyBatis的轻量级动态数据统计系统 |
CN113297249A (zh) * | 2021-01-25 | 2021-08-24 | 阿里云计算有限公司 | 慢查询语句的识别和分析、查询语句的统计方法及装置 |
CN114020794A (zh) * | 2022-01-06 | 2022-02-08 | 北京快成科技有限公司 | 一种MySQL数据库慢查询的处理方法、装置、介质和设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106202444A (zh) * | 2016-07-14 | 2016-12-07 | 浪潮软件股份有限公司 | 一种数据库运维监控的实现方法 |
CN107818024A (zh) * | 2017-11-22 | 2018-03-20 | 北京汇通金财信息科技有限公司 | 一种基于spring拦截器的request ID传递方法及系统 |
CN109508344A (zh) * | 2018-09-29 | 2019-03-22 | 中国平安人寿保险股份有限公司 | 业务数据查询方法、装置、电子设备及存储介质 |
-
2019
- 2019-06-25 CN CN201910554874.4A patent/CN110263129A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106202444A (zh) * | 2016-07-14 | 2016-12-07 | 浪潮软件股份有限公司 | 一种数据库运维监控的实现方法 |
CN107818024A (zh) * | 2017-11-22 | 2018-03-20 | 北京汇通金财信息科技有限公司 | 一种基于spring拦截器的request ID传递方法及系统 |
CN109508344A (zh) * | 2018-09-29 | 2019-03-22 | 中国平安人寿保险股份有限公司 | 业务数据查询方法、装置、电子设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
ANDY2CLOUD: "mybatis的拦截器实现统计分析sql的执行时间", 《HTTPS://BLOG.CSDN.NET/ANDYZHAOJIANHUI/ARTICLE/DETAILS/72823055》 * |
五月的仓颉: "MyBatis7:MyBatis插件及示例----打印每条SQL语句及其执行时间", 《HTTPS://WWW.CNBLOGS.COM/XRQ730/P/6972268.HTML》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930811A (zh) * | 2020-10-09 | 2020-11-13 | 绿漫科技有限公司 | 一种基于MyBatis的轻量级动态数据统计系统 |
CN113297249A (zh) * | 2021-01-25 | 2021-08-24 | 阿里云计算有限公司 | 慢查询语句的识别和分析、查询语句的统计方法及装置 |
CN114020794A (zh) * | 2022-01-06 | 2022-02-08 | 北京快成科技有限公司 | 一种MySQL数据库慢查询的处理方法、装置、介质和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110263129A (zh) | 基于Mybatis框架进行慢查询操作统计的方法 | |
CN107111540B (zh) | 动态遥测消息剖析和调节 | |
CN107436832B (zh) | 一种动态埋点的方法、装置及电子设备 | |
US9652366B2 (en) | Code change analysis to optimize testing lifecycle | |
CN104468277A (zh) | 变电站网络与通讯协议的一致性测试的方法及装置 | |
CN110324324B (zh) | 一种电、水、气、热四表采集协议系统及转换方法 | |
US20120137181A1 (en) | Preventing log wrap with debug scripts | |
CN110134582A (zh) | 测试用例的处理及数据处理方法及装置 | |
CN110489310B (zh) | 一种记录用户操作的方法、装置、存储介质及计算机设备 | |
CN104156300A (zh) | 日志管理系统和日志管理方法 | |
US10346281B2 (en) | Obtaining and analyzing a reduced metric data set | |
US20120254313A1 (en) | Multiple Destinations for Mainframe Event Monitoring | |
CN115576649A (zh) | 一种基于行为监控的容器运行时安全检测方法 | |
CN106056227B (zh) | 基于iec61850标准的智能变电站服务跟踪方法 | |
CN111597089A (zh) | 一种Linux系统调用事件采集和缓存装置及方法 | |
CN110597880A (zh) | 一种用水模式挖掘和匹配的方法,系统和设备 | |
CN108932199B (zh) | 一种基于用户界面分析的自动化污点分析系统 | |
CN102693182A (zh) | 一种在mvc 中使用测试驱动开发的存储库模式 | |
CN110196868A (zh) | 基于分布式的工单流程监控方法 | |
Saluja et al. | Optimized approach for antipattern detection in service computing architecture | |
CN115809179A (zh) | 基于应用性能数据的告警方法、系统、设备和存储介质 | |
CN109062552A (zh) | 一种断路器试验多维度信息查询app的设计方法 | |
CN115705250A (zh) | 监测堆栈使用量以优化程序 | |
CN114238130A (zh) | 性能测试方法、装置、设备及存储介质 | |
CN113986937A (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 |
Application publication date: 20190920 |
|
RJ01 | Rejection of invention patent application after publication |