文章目录
前言
SQL性能监控是一个程序必要的功能,通常我们可以使用数据库自带的客户端工具进行SQL性能分析。然而对于一些专业度不高的人员来说,当程序出现卡顿或者响应速度变慢时,排查问题变得困难。当程序出现卡顿,通常通过检查服务器磁盘使用情况、程序内存大小,网络带宽以及数据库I/O等方面进行问题排查。然而数据库I/O打高的情况通常是由于SQL执行效率过低导致的。一般项目制的公司都有属于自己的实施人员,然而要让实施人员去排查具体SQL执行过慢问题,这显然对于专业度不高的工作人员来说是一种挑战和煎熬。因此本系列文章将介绍如何使用Mybatis的拦截器功能完成对SQL执行的时间记录,并通过MQ推送至SQL记录服务
,记录具体的慢SQL信息,后续可以通过页面进行展示。通过可视化的方式让实施人员快速定位到问题所在。
一、基本功能介绍
本章节只实现Mybatis执行时对执行SQL进行拦截,控制台打印执行SQL包括参数、执行方法以及执行时间。大致结构图如下:
对慢SQL进行发送MQ,记录显示到前端界面的功能,将在本系列文章第二章实现。
1.1本章功能效果预览图:
Mapper Method: 显示该SQL是由哪个Mapper方法进行调用执行。
Execute SQL:打印出完整执行的SQL,自动填充了参数。
Spend Time:记录本次SQL执行花费的时间。
二、可执行源码
2.1 yaml基础配置
需要在yaml配置文件中配置是否打印SQL执行信息。当然该配置可以放入Redis中,以方便后续面向微服务时,可以一键开启和关闭,这里就不再演示,后续扩展可有您自主实现。
mybatis-analyze:
show-log: true #SQL打印到控制台
2.2 MybatisAnalyzeSQLInterceptor实现SQL拦截
源码可直接复制运行!!!!!
package com.hl.by.common.mybatis.interceptor;
import lombok.Getter;
import lombok.Sett