• SpringBoot如何打印带参数的sql和执行时间p6spy


    SpringBoot如何打印带参数的sql和执行时间-p6spy

    背景:最近优化项目,然后有找影响效率的地方,就像打印所有sql日志

    然后发现了mybatisplus的这个插件 

    前言
    如果你恰好使用 Mybatis-plus 框架,那么在开发环境就不能错过它提供的 PerformanceInterceptor 插件,该插件能打印 sql 执行时间以及完整的 sql 语句,非常方便复制出来分析 sql

    使用
    使用的 Mybatis-plus 框架比较老,是 2.3 版本的,引入依赖,然后实例化 PerformanceInterceptor 插件即可(注意该插件在 3.2 版本以上被移除,可考虑使用 p6spy 分析插件),如下

    3.2以下

    <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>2.3</version>
                <exclusions>
                    <exclusion>
                        <artifactId>tomcat-jdbc</artifactId>
                        <groupId>org.apache.tomcat</groupId>
                    </exclusion>
                </exclusions>
    </dependency>

      

    
    
    @Bean
    @Profile({"dev", "test"})
    public PerformanceInterceptor performanceInterceptor() {
    PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
    performanceInterceptor.setMaxTime(15000);
    performanceInterceptor.setFormat(false);
    return performanceInterceptor;
    

      

    3.2以上用P6Spy插件

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

    P6SPY提供了如下几个功能:

    记录SQL语句的执行时间戳。
    记录SQL语句类型
    记录SQL填入参数的和没有填入参数的SQL语句
    根据配置的时间控制SQL语句的执行时间,对超出时间的SQL语句输出到日志文件中

    展示效果
    可以看到打印的sql,执行时间,和打印sql所携带的参数

    如何配置
    1.在Pom文件中添加maven依赖

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

      



    2.新增文件spy.properties


    #日志格式
    appender=com.p6spy.engine.spy.appender.Slf4JLogger
    #输出格式
    logMessageFormat=com.p6spy.engine.spy.appender.MultiLineFormat
    #sql执行时间和格式
    customLogMessageFormat=executionTime:%(executionTime) | sql:%(sql)
    官网有相应的配置文件和参数说明,以上只是常用的几个配置属性
    Configuration and Usage — p6spy 3.9.2-SNAPSHOT documentation
    

      

    3.修改mysql连接驱动
    数据库的驱动替换为:com.p6spy.engine.spy.P6SpyDriver

    url的jdbc后面加: p6spy:

    driver-class-name: com.p6spy.engine.spy.P6SpyDriver
    url: jdbc:p6spy:mysql://localhost:3306/studyx_briliansolution6?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC

    具体配置如下:

    spring:
    datasource:
    driver-class-name: com.p6spy.engine.spy.P6SpyDriver
    # url: jdbc:mysql://localhost:3306/studyx_briliansolution6?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    url: jdbc:p6spy:mysql://localhost:3306/studyx_briliansolution6?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC

  • 相关阅读:
    spring简介
    Thinkphp5 的sesssion在同一个控制器不同的方法无法获取session的原因和对策
    PHP单例模式--典型的三私一公
    10+ 值得收藏的开源后台模板
    PHP中&&与and、||与or的区别
    iview weapp输入组件input事件顺序
    php 获取post方法payload(json)形式参数的方法
    Git pull(拉取),push(上传)命令整理(详细)
    小程序 子组件传值
    php display_errors
  • 原文地址:https://www.cnblogs.com/d0minic/p/16407975.html
Copyright © 2020-2023  润新知