一、简介
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 配置
-
替换你的 JDBC Driver 为 com.p6spy.engine.spy.P6SpyDriver。 -
修改 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
已经配置完成!!
原文始发于微信公众号(连帆起航):SpringBoot 快速集成 p6spy 监控 SQL 性能,Mybaties-plus
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/239328.html