• 性能分析插件



    我们在平时的开发中,会遇到一些慢的sql。测试插件有:druid …

    当然,MP也提供了性能分析插件,如果超过这个时间就停止运行!

    该功能依赖 p6spy 组件,完美的输出打印 SQL 及执行时长 3.1.0 以上版本


    这篇文章我们讲解如何使用该插件

    【新版】性能分析插件

    1、导入MP依赖版本(3.4.0及其以上)与p6spy

     	
       <dependency>
            <groupId>com.baomidougroupId>
            <artifactId>mybatis-plus-boot-starterartifactId>
            <version>3.4.2version>
        dependency>
        
    	
        <dependency>
            <groupId>p6spygroupId>
            <artifactId>p6spyartifactId>
            <version>3.9.1version>
        dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2、配置application.yml数据源

    主要修改driver-class-nameurl中jdbc后需要加上p6spy

    # 数据库连接配置
    spring:
      datasource:
        username: root
        password: 123456
        url: jdbc:p6spy:mysql://localhost:3306/mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=UTF-8
        driver-class-name: com.p6spy.engine.spy.P6SpyDriver
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3、添加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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    【旧版】性能分析插件

    1、导入旧版依赖

     
            <dependency>
                <groupId>com.baomidougroupId>
                <artifactId>mybatis-plus-boot-starterartifactId>
                <version>3.0.5version>
            dependency>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2、在application.yml中配置数据源

    # 数据库连接配置
    spring:
      datasource:
        username: root
        password: 123456
        url: jdbc:mysql://localhost:3306/mybatis_plus?useSSL=true&useUnicode=true&characterEncoding=UTF-8
        driver-class-name: com.mysql.jdbc.Driver
      #开发环境
      profiles:
        active: dev
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3、配置组件

    //性能分析插件
        @Bean
        @Profile({"dev","test"}) //设置dev test 环境开启,保证我们的效率
        public PerformanceInterceptor performanceInterceptor(){
            PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
            //配置参数为了更清晰的看到执行效果
            performanceInterceptor.setMaxTime(100); // 单位:ms ,设置sql执行的最大时间,超过了则不执行
            performanceInterceptor.setFormat(true); // 是否格式代码
            return performanceInterceptor;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    显示结果

    在这里插入图片描述

    【新版本】请注意

    • driver-class-name 为 p6spy 提供的驱动类
    • url 前缀为 jdbc:p6spy 跟着冒号为对应数据库连接地址
    • 打印出 sql 为 null,在 excludecategories 增加 commit
    • 批量操作不打印 sql,去除 excludecategories 中的 batch
    • 批量操作打印重复的问题请使用 MybatisPlusLogFactory (3.2.1 新增)
    • 该插件有性能损耗,不建议生产环境使用
  • 相关阅读:
    编程语言如何推动DeFi成为主流?
    RemObjects SDK for Delphi
    【控制】自适应控制,模型参考自适应控制,公式推导,有程序有结果图
    【C++】AVL树的简单实现
    pycharm环境下打开Django内置的数据库Sqlite出错问题解决
    分布式事务
    网络安全(黑客)自学
    阿里云难题学习笔记
    uniapp中实现H5录音和上传、实时语音识别(兼容App小程序)和波形可视化
    抓包工具总结对照【fiddler F12 Charles wireshark】
  • 原文地址:https://blog.csdn.net/weixin_45737330/article/details/126398817