# p6spy的基本安装

p6spy是常用的sql执行效率插件,可有效帮助开发人员进行sql效率检查及过滤

警告

强烈不建议生产环境启用p6spy

  • p6spy会导致sql执行效率降低
  • 由于和druid合用需要关闭druid的防火墙,容易导致安全问题

提示

环境说明:

  • JDK 1.8
  • SpringBoot 2.3.5.RELEASE
  • JeecgBoot 3.0.0单体应用
  • p6spy 3.9.1
  • durid 1.1.22
  • dynamic-datasource-spring-boot-starter 3.2.0
  • pom.xml增加p6spy的依赖
<!-- https://mvnrepository.com/artifact/p6spy/p6spy -->
<dependency>
    <groupId>p6spy</groupId>
    <artifactId>p6spy</artifactId>
    <version>3.9.1</version>
</dependency>
  • resource目录下增加spy.properties文件
#3.2.1以上使用
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
#3.2.1以下使用或者不配置
#modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志输出到控制台
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=org.h2.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 2 秒
outagedetectioninterval=2
  • 修改项目的yml文件

注意

  • 驱动统一设置为com.p6spy.engine.spy.P6SpyDriver
  • url的地址中间记得加入p6spy
# 如果未使用dynamic-datasource,则不需要添加下面配置
spring:
  datasource:
    dynamic: 
      p6spy: true

# 修改数据库驱动和url
xxx.driver-class-name: com.p6spy.engine.spy.P6SpyDriver
xxx.url: jdbc:p6spy:mysql://127.0.0.1:3306/rwdb?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai

# p6spy与druid集成导致的启动报错

现象是提示Failed to obtain JDBC Connection: dbType not support : null,表示经过修改的jdbc-url无法被druid识别。

发生的原因是druidwallFilter的过滤导致

解决办法,关闭druid的防火墙配置

# 修改前
spring.datasource.druid.filters: stat,slf4j,wall
# 修改后
spring.datasource.druid.filters: stat,slf4j

# To Be Continued!😎

Last Updated: 12/24/2021, 2:13:50 PM