MybatisPlus整合p6spy组件SQL分析

桃扇骨 2023-10-14 20:56 177阅读 0赞

目录

p6spy

java为什么需要

如何使用

其他配置


p6spy

p6spy是一个开源项目,通常使用它来跟踪数据库操作,查看程序运行过程中执行的sql语句。

p6spy将应用的数据源给劫持了,应用操作数据库其实在调用p6spy的数据源,p6spy劫持到需要执行的sql或者hql之类的语句之后,他自己去调用一个realDatasource,再去操作数据库.

P6Spy是一个开源的Java应用程序,它可以拦截和记录JDBC(Java数据库连接)调用,以便开发人员可以更方便地进行数据库调试和性能优化。P6Spy可以通过提供数据库调试信息和SQL执行时间等方面的信息来帮助开发人员诊断慢查询和其他数据库问题。

P6Spy的应用包括:

  1. 监视和记录JDBC调用:P6Spy可以拦截JDBC驱动程序发送到数据库的SQL语句,并记录它们以供后期分析。
  2. 统计查询性能:P6Spy可以记录SQL执行时间、连接打开和关闭时间以及事务提交和回滚时间等有关性能的信息。
  3. 分析慢查询:P6Spy可以帮助开发人员查找和调试缓慢的SQL查询,以便优化查询性能。
  4. 预测系统行为:使用P6Spy,开发人员可以获得有关系统负载和数据库性能的信息,以便优化系统配置和资源使用。

java为什么需要

在我们日常开发工作当中,避免不了查看当前程序所执行的SQL语句,以及了解它的执行时间,方便分析是否出现了慢SQL问题。我们可以使用MybatisPlus提供的SQL分析打印的功能,来获取SQL语句执行的时间。

通过P6Spy可以对SQL语句进行拦截,相当于一个SQL语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。

如何使用

分析sql语句等功能依赖于p6spy组件,所以需要在pom.xml中先引入该组件

  1. <dependency>
  2. <groupId>p6spy</groupId>
  3. <artifactId>p6spy</artifactId>
  4. <version>3.9.1</version>
  5. </dependency>

在application.yml中进行配置

  1. spring:
  2. datasource:
  3. driver-class-name: com.p6spy.engine.spy.P6SpyDriver
  4. url: jdbc:p6spy:mysql

在resources下,创建 spy.properties配置文件

  1. #3.2.1以上使用modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
  2. # 自定义日志打印
  3. logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
  4. #日志输出到控制台
  5. appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
  6. # 使用日志系统记录 sql
  7. #appender=com.p6spy.engine.spy.appender.Slf4JLogger
  8. # 设置 p6spy driver 代理
  9. deregisterdrivers=true
  10. # 取消JDBC URL前缀
  11. useprefix=true
  12. # 配置记录 Log 例外,可去掉的结果集error,info,batch,debug,statement,commit,rollback,result,resultset.
  13. excludecategories=info,debug,result,commit,resultset
  14. # 日期格式
  15. dateformat=yyyy-MM-dd HH:mm:ss
  16. # 实际驱动可多个
  17. #driverlist=org.h2.Driver
  18. # 是否开启慢SQL记录
  19. outagedetection=true
  20. # 慢SQL记录标准 2 秒
  21. outagedetectioninterval=2

执行查询所有的操作,可以看到sql语句的执行时间

e5771852d220409dad5b506c8dbbb2a7.png

主要配置

主要是【spring.datasource.driver-class-name】和【decorator.datasource.p6spy】相关配置。

  1. spring:
  2. datasource:
  3. url: jdbc:p6spy:postgresql://xxx.xx.xxx.xxx:2345/gpdb
  4. username: gpadmin
  5. password: gpadmin
  6. driver-class-name: com.p6spy.engine.spy.P6SpyDriver
  7. type: com.alibaba.druid.pool.DruidDataSource
  8. decorator:
  9. datasource:
  10. p6spy:
  11. logging: file
  12. log-file: spy.log
  13. log-format: executionTime:%(executionTime) | sql:%(sqlSingleLine)

默认情况下,将在当前工作目录中创建一个名为 spy.log 的文件。要自定义日志记录(包括使用应用程序的日志记录框架),您可以在名为 spy.properties 的文件中提供备用配置。这个文件只需要在类路径的根目录下。

其他配置

logging: file 模式可以保存所有执行的SQL信息,在我们调试项目的时候,如果我们只需要控制台打印,那么配置如下:

  1. decorator:
  2. datasource:
  3. p6spy:
  4. logging: slf4j

发表评论

表情:
评论列表 (有 0 条评论,177人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Mybatis 配置p6spy

    在开发中,为了更方便的知道编写的sql语句是否正确,则通过配置p6spy在控制台打印sql语句,从而解决因sql语句错误导致的程序运行失败,配置方式如下: 1,导入p6sp

    相关 使用P6Spy格式化SQL语句

    公司最近在做一个项目,开发过程中遇到点小问题,查询结果出不来,查看自带日志打印,有点不爽,特别是想复制sql语句到数据库navicat中去调试时,还要手动复制参数值,很是麻烦,

    相关 P6Spy

     P6Spy是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。通过P6Spy我们可以对SQL语句进行拦截,相当于一个SQL语句的记录器,这样我们可以用它来作相关的分析