MybatisPlus整合p6spy组件SQL分析

news2024/9/20 6:52:00

目录

 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中先引入该组件

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

 在application.yml中进行配置

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

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

#3.2.1以上使用modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,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

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

主要配置


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

spring:
  datasource:
    url: jdbc:p6spy:postgresql://xxx.xx.xxx.xxx:2345/gpdb
    username: gpadmin
    password: gpadmin
    driver-class-name: com.p6spy.engine.spy.P6SpyDriver
    type: com.alibaba.druid.pool.DruidDataSource
decorator:
  datasource:
    p6spy:
      logging: file
      log-file: spy.log
      log-format: executionTime:%(executionTime) | sql:%(sqlSingleLine)

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

其他配置

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

decorator:
  datasource:
    p6spy:
      logging: slf4j

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/888384.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python项目中怎么实现异步任务和定时任务

这里写目录标题 一、异步任务:二、定时任务:三、Celery介绍特点:Celery由三部分构成:工作原理:安装Celery选择一个Broker:RabbitMQKafka和RabbitMQ的区别:定义一个任务定义第二个任务定义一个生产者(producer) 来 调用异步任务启动celery服务定义一个获取结果的类定时任…

Activiti6

一、Activiti介绍与搭建开发环境 二、运行官方例子 三、编写第一个Activiti程序 3.1 流程部署 代码 /*** 部署流程* 涉及到的表有&#xff1a; * 1.act_ge_bytearray 两条记录&#xff0c;一条xml数据&#xff0c;一条png图片信息 * 2.act_re_deployment 一条记录 * 3.a…

BBS项目day02、注册、登录(登录之随机验证码)、退出登录、密码加密加盐、首页(导航条、模态框,修改密码)

一、注册 1.注册之前端页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>注册页面</title><!--动态引入文件-->{% load static %}<script src"{% static js/jquery.min.js %…

深度开发者故事 | 华为云API Explorer 自动化运维的得力助手

华为云API Explorer为开发者提供一站式API解决方案统一平台&#xff0c;集成华为云服务所有开放API&#xff0c;支持全量快速检索、可视化调试、帮助文档、代码示例等能力&#xff0c;帮助开发者快速学习API&#xff0c;使用API开发代码实现自动化运维。 体验通道&#xff1a;…

企业数字化时代,数据要素是什么?有什么作用价值?

信息化、数字化社会加速到来&#xff0c;企业纷纷开始布局数字化转型&#xff0c;数字经济将成为未来世界中最为火热的新型经济。 数据报表作为企业数字化转型的代表节点之一&#xff0c;未来会成为数字化企业的基本配置。 要想企业全身心投入数据报表体系建设中&#xff0c;…

个性化定制界面与极简版原装界面:我们为什么选择个性化?

个性化定制界面和极简版原装界面&#xff0c;哪一个你用起来更加顺手呢&#xff0c;相比之下你更喜欢哪一个&#xff1f;来聊一聊原因吧&#xff01; 随着科技的不断发展&#xff0c;人们对于界面设计也有了越来越高的要求。而在界面设计领域&#xff0c;个性化定制界面和极简版…

rust入门系列之Rust介绍及开发环境搭建

Rust教程 Rust基本介绍 网站: https://www.rust-lang.org/ rust是什么 开发rust语言的初衷是&#xff1a; 在软件发展速度跟不上硬件发展速度&#xff0c;无法在语言层面充分的利用硬件多核cpu不断提升的性能和 在系统界别软件开发上&#xff0c;C出生比较早&#xff0c;内…

Qt表格数据处理

概述 在Qt表格数据处理中&#xff0c;涉及到如下几个具体的类&#xff1a; QAbstractItemModel&#xff1a;这是一个抽象基类&#xff0c;定义了模型&#xff08;Model&#xff09;的接口规范。所有的模型类都应该派生自QAbstractItemModel&#xff0c;并实现它的纯虚函数&…

学习电工有哪些好处?在哪学习电工?

学习电工有哪些好处&#xff1f;在哪学习电工&#xff1f;学习电工可以做什么&#xff1f;优势有哪些&#xff1f; 学习电工可以做什么&#xff1f;学习电工有哪些好处&#xff1f; 就业去向&#xff1a;可在企业单位从事电气设备的安装、调试、操作、维护等工作&#xff0c;…

GDP药品供应管理规范确保冷链运输合规性

药品运输面临许多挑战&#xff0c;包括产品可能因暴露在不利条件下导致降解。药品供应管理规范 (GDP) 运输指南在确保整个运输链的冷链合规性方面发挥着关键作用。 药品的分销与生产和制造生产线一样精细和敏感。自全球物流公司成立以来&#xff0c;配送过程中对受控环境的需求…

运维自动化与Cobbler服务部署

运维自动化与Cobbler服务部署 一.Cobbler简介1.1.简介1.2.Cobbler的下属服务1.3.工作流程 二.Cobbler安装2.1.安装epel源2.2.安装Cobbler及其相关的服务和组件 三.Cobbler配置3.1.Cobbler配置文件及各目录情况3.2.配置及启动cobblerd服务 四.Cobbler使用4.1用法4.2配置linux发行…

IIC总线原理

1. IIC总线概述 IIC总线 IIC总线是Philips公司在八十年代初推出的一种串行、半双工总线 主要用于近距离、低速的芯片之间的通信&#xff1b;IIC总线有两根双向的信号线一根数据线SDA用于收发数据&#xff0c;一根时钟线SCL用于通信双方时钟的同步&#xff1b;IIC总线硬件结构简…

elementPlus——图标引入+批量注册全局组件——基础积累

因为我们要根据路由配置对应的图标&#xff0c;也要为了后续方便更改。因此我们将所有的图标注册为全局组件。&#xff08;使用之前将分页器以及矢量图注册全局组件的自定义插件&#xff09;&#xff08;所有图标全局注册的方法element-plus文档中已给出&#xff09; 全局注册…

vue中 .env .env.development .env.production 详细说明

1.配置文件有&#xff1a; .env 全局默认配置文件&#xff0c;不论什么环境都会加载合并 .env.development 开发环境下的配置文件 .env.production 生产环境下的配置文件 2.命名规则&#xff1a; 属性名必须以VUE_APP_开头&#xff0c;比如VUE_APP_XXX 3.关于文件的加载&#x…

kubernetes基于helm部署minecraft

kubernetes基于helm部署minecraft kubernetes容器集群中部署minecraft server服务器。 项目地址&#xff1a;https://github.com/itzg/minecraft-server-charts 官方文档&#xff1a;https://itzg.github.io/minecraft-server-charts/ 前置要求&#xff1a; 已准备kubern…

国标GB28181视频平台EasyGBS国标平台的应用场景以及方案实现

EasyGBS国标视频融合云平台基于端-边-云一体化架构&#xff0c;部署轻量简单、功能灵活多样&#xff0c;平台可支持多协议&#xff08;GB28181/RTSP/Onvif/海康SDK/Ehome/大华SDK/RTMP推流等&#xff09;、多类型设备接入(IPC/NVR/监控平台)&#xff0c;在视频能力上&#xff0…

华为认证含金量如何

华为认证是指通过华为技术有限公司官方认证考试所获得的认证资格。华为认证主要分为三个级别&#xff1a;华为认证工程师&#xff08;HCIE&#xff09;、华为认证专家&#xff08;HCNP&#xff09;和华为认证技术专家&#xff08;HCNA&#xff09;&#xff0c;每个级别都有不同…

lvs集群与nat模式

一&#xff0c;什么是集群&#xff1a; 集群&#xff0c;群集&#xff0c;Cluster&#xff0c;由多台主机构成&#xff0c;但是对外只表现为一个整体&#xff0c;只提供一个访问入口&#xff08;域名与ip地址&#xff09;&#xff0c;相当于一台大型计算机。 二&#xff0c;集…

什么是Liquid UI?

热门议题&#xff1a; 1、企业如何快速解决人员移动办公的需求&#xff0c;比如在苹果安卓手机&#xff0c;平板电脑&#xff0c;MAC登录SAP。2、企业如何解决用户经常抱怨的流程复杂&#xff0c;操作繁琐&#xff0c;难以使用等问题 公司介绍&#xff1a; Synactive,Inc. 是…

【推荐】深入浅出学习Spring框架

​ 目录 1.spring简介 1.1含义 1.2优点 2&#xff0c;Spring之IOC详解 2.1&#xff0c;控制反转是什么 2.2&#xff0c;控制反转案例 2.1.3案例前台测试 3、IoC的三种注入方式 3.1 构造方法注入 3.2 setter方法注入 3.3 接口注入&#xff08;自动装配&#xff09;用的最多&…