SpringBoot集成P6Spy监控SQL执行耗时的详细步骤

 更新时间:2025年07月08日 08:57:47   作者:学亮编程手记  
P6Spy 是一款开源的 Java 框架,是一个强大的数据库监控工具,可以帮助开发者监控并分析应用程序与数据库之间的交互行为,本文给大家介绍了SpringBoot集成P6Spy监控SQL执行耗时的详细步骤,需要的朋友可以参考下

SpringBoot集成P6Spy监控SQL耗时

P6Spy是一个开源的SQL监控工具,可以拦截并记录应用程序中所有的SQL语句及其执行时间。下面是SpringBoot集成P6Spy的详细步骤:

1. 添加依赖

pom.xml中添加P6Spy依赖:

<dependency>
    <groupId>p6spy</groupId>
    <artifactId>p6spy</artifactId>
    <version>3.9.1</version> <!-- 使用最新版本 -->
</dependency>

2. 配置数据源

修改你的数据源配置,将原来的JDBC驱动替换为P6Spy的驱动:

# application.properties 配置示例
spring.datasource.url=jdbc:p6spy:mysql://localhost:3306/your_database
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver

3. 添加spy.properties配置文件

src/main/resources目录下创建spy.properties文件:

# 真实JDBC驱动
driverlist=com.mysql.cj.jdbc.Driver

# 是否自动刷新日志
autoflush=true

# 日志输出方式,可以是file/sysout/slf4j
appender=sysout

# 日志格式
logMessageFormat=com.p6spy.engine.spy.appender.CustomLineFormat
customLogMessageFormat=%(currentTime) | %(executionTime)ms | %(category) | connection %(connectionId) | %(sqlSingleLine)

# 记录过滤,可以设置只记录超过特定时间的SQL
filter=true
exclude=QCache,Quartz

4. 高级配置(可选)

4.1 日志输出到文件

appender=file
logfile=spy.log

4.2 使用SLF4J输出日志

appender=slf4j

4.3 只记录超过特定时间的SQL

executionThreshold=100  # 只记录执行时间超过100ms的SQL

4.4 格式化SQL语句

logMessageFormat=com.p6spy.engine.spy.appender.MultiLineFormat

5. 示例输出

配置完成后,控制台会输出类似以下格式的SQL日志:

2023-08-01 14:30:45 | 12ms | statement | connection 1 | select * from user where id = 1
2023-08-01 14:30:46 | 45ms | statement | connection 1 | update user set name = 'test' where id = 1

6. 注意事项

  1. 生产环境建议不要使用sysout方式输出日志,可以使用fileslf4j
  2. 对于性能敏感的应用程序,P6Spy可能会带来轻微的性能开销
  3. 如果使用HikariCP等连接池,确保配置正确

7. 替代方案

如果只需要简单的SQL监控,也可以考虑:

  • Spring Boot自带的spring.jpa.show-sql=true
  • 使用HikariCP的leakDetectionThreshold配置
  • 使用Druid数据源的内置监控功能

到此这篇关于SpringBoot集成P6Spy监控SQL执行耗时的详细步骤的文章就介绍到这了,更多相关SpringBoot P6Spy监控SQL耗时内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • IDEA社区版下载安装流程详解(小白篇)

    IDEA社区版下载安装流程详解(小白篇)

    这篇文章主要介绍了IDEA社区版下载安装流程详解(小白篇),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 一文教你搞定Java Optional类判空操作

    一文教你搞定Java Optional类判空操作

    有时项目组内做code review,会充斥着大量的、原始的、丑陋的判空语句。让整体的代码显得十分的臃肿庞大丑陋,那么怎么办呢?利用Optional这个jdk8中引入的类就可以优雅的处理,现在我们来详细讲解下这个类的使用和源码
    2022-10-10
  • 深度理解Java访问修饰符

    深度理解Java访问修饰符

    今天带大家学习的是Java的相关知识,文章围绕着Java访问修饰符展开,有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Spring项目中Ordered接口的应用之全局过滤器(GlobalFilter)的顺序控制

    Spring项目中Ordered接口的应用之全局过滤器(GlobalFilter)的顺序控制

    在Spring框架,尤其是Spring Cloud Gateway或Spring WebFlux项目中,Ordered接口扮演着重要的角色,特别是在实现全局过滤器(GlobalFilter)时,用于控制过滤器执行的优先级,下面将介绍如何在Spring项目中使用Ordered接口来管理Global Filter的执行顺序,需要的朋友可以参考下
    2024-06-06
  • 浅谈String、StringBuffer和StringBuilder之间的区别

    浅谈String、StringBuffer和StringBuilder之间的区别

    这篇文章主要介绍了浅谈String、StringBuffer和StringBuilder之间的区别,通过字面量方式为字符串赋值时,此时的字符串存储在方法区的字符串常量池中,需要的朋友可以参考下
    2023-10-10
  • 详解Java异常处理中finally子句的运用

    详解Java异常处理中finally子句的运用

    这篇文章主要介绍了Java异常处理中finally子句的运用,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • SpringBoot拦截器以及源码详析

    SpringBoot拦截器以及源码详析

    拦截器在我们平时的项目中用处有很多,如:日志记录(我们后续章节会讲到)、用户登录状态拦截、安全拦截等等,所以下面这篇文章主要给大家介绍了关于SpringBoot拦截器以及源码的相关资料,需要的朋友可以参考下
    2021-07-07
  • Java编程ssh整合常见错误解析

    Java编程ssh整合常见错误解析

    这篇文章主要介绍了Java编程ssh整合常见错误解析,如果有什么不足之处,欢迎留言补充。
    2017-10-10
  • 关于Future机制原理及解析

    关于Future机制原理及解析

    这篇文章主要介绍了关于Future机制原理,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • MyBatis中一对多的xml配置方式(嵌套查询/嵌套结果)

    MyBatis中一对多的xml配置方式(嵌套查询/嵌套结果)

    这篇文章主要介绍了MyBatis中一对多的xml配置方式(嵌套查询/嵌套结果),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03

最新评论