SpringBoot 快速集成 p6spy 监控 SQL 性能,Mybaties-plus

一、简介

p6spy 是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。通常使用它来跟踪数据库操作,查看程序运行过程中执行的sql语句。简单来说,就是对 SQL 语句执行过程的监控。

二、抛出问题

首先来看一下 Mybaties-plus 的默认输出:
在这里插入图片描述
我们期望的是打印出一条完整的 sql 语句,而不是带问号。甚至还想要看到每条 sql 语句的总耗时。这个时候,p6spy 就发挥出它的作用了。

三、导入依赖

pom.xml 中导入 p6spy 依赖

		<dependency>
            <groupId>p6spy</groupId>
            <artifactId>p6spy</artifactId>
            <version>3.9.1</version>
        </dependency>

四、修改 JDBC 配置

  1. 替换你的JDBC Driver为com.p6spy.engine.spy.P6SpyDriver;
  2. 修改JDBC Url为jdbc:p6spy:xxxx。

修改前
在这里插入图片描述
修改后
在这里插入图片描述

五、配置 spy.properties

添加配置文件 spy.properties

# P6Spy的配置
# 应用的拦截模块
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印
#logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
logMessageFormat=com.p6spy.engine.spy.appender.CustomLineFormat
# 日志输出到控制台
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系统记录 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 设置 p6spy driver 代理
deregisterdrivers=true
# 取消JDBC URL前缀
useprefix=true
# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 实际驱动 可多个
driverlist=com.mysql.cj.jdbc.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 2 秒
outagedetectioninterval=2
# 自定义日志配置
# 可用的变量为:
#   %(connectionId)            connection id
#   %(currentTime)             当前时间
#   %(executionTime)           执行耗时
#   %(category)                执行分组
#   %(effectiveSql)            提交的SQL 换行
#   %(effectiveSqlSingleLine)  提交的SQL 不换行显示
#   %(sql)                     执行的真实SQL语句,已替换占位
#   %(sqlSingleLine)           执行的真实SQL语句,已替换占位 不换行显示
customLogMessageFormat=[%(currentTime)] [%(category)-%(connectionId)] [execute time: %(executionTime) ms] execute sql:\n %(sql)

如果以上配置无法满足你的需求,可以查看一下详细的 spy.properties 说明,根据自己的需求配置。

六、测试

配置完成之后,再次调用接口
在这里插入图片描述
可以看到,控制台打印出了完整的 SQL 语句和执行耗时。

至此,p6spy 已经配置完成!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一支帆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值