大数跨境
0
0

Spring Boot 零侵入慢SQL监控,支持JDBC/JPA/MyBatis

Spring Boot 零侵入慢SQL监控,支持JDBC/JPA/MyBatis Spring全家桶实战案例
2025-05-28
0
导读:Spring Boot 零侵入慢SQL监控,支持JDBC/JPA/MyBatis
Spring Boot 3实战案例锦集PDF电子书已更新至100篇!
图片

🎉🎉《Spring Boot实战案例合集》目前已更新128个案例,我们将持续不断的更新。文末有电子书目录。

💪💪永久更新承诺

我们郑重承诺,所有订阅合集的粉丝都将享受永久免费的后续更新服务

💌💌如何获取
订阅我们的合集点我订阅,并通过私信联系我们,我们将第一时间将电子书发送给您。

→ 现在就订阅合集

环境:SpringBoot3.4.2



1. 简介

慢SQL指查询执行时间超出合理阈值(如数百毫秒以上)的语句,常因索引缺失、复杂联表、全表扫描或数据量激增导致。其直接影响包括响应延迟飙升、吞吐量骤降、系统资源(CPU/IO)耗尽,甚至引发服务雪崩。

我们可以使用第三方的组件(如:p6spy)来记录sql的执行情况,找出哪些SQL是慢SQL,有关该组件的详细使用请查看下面这篇文章:

优雅!SpringBoot详细记录SQL执行耗时情况

为实现技术能力进阶,我们自主开发了一个组件实现慢 SQL 监控。该组件支持JDBC、MyBatis 及 JPA 的 SQL 执行过程进行无侵入拦截,通过代理技术捕获数据库操作。当 SQL 执行耗时超过预设阈值(如 500ms)时,组件自动触发日志记录,输出结构化监控信息,涵盖 完整 SQL 语句(含参数占位符及实际值)、执行耗时等关键信息进行记录,为性能分析提供全链路数据支撑。

如下最终效果:

21:53 WARN [main] pack.ps.handler Line:47  - ---------------------------SQL Execution Details---------------------------SQLselect * from p_user where name = ? or age = ?Parameters: [张三, 33]Slow SQLtrueExecution Time1669ms---------------------------

以上实现不需要对现有的业务逻辑进行任何的修改。

2.实战案例

2.1 定义可配置信息

@Component@ConfigurationProperties(prefix = "pack.sql")public class SqlProperties {  /**是否显示SQL*/  private boolean showSql = true ;  /**是否显示执行SQL动态参数*/  private boolean showParam = false ;  /**是否显示慢SQL*/  private boolean slowSql = false ;  /**慢SQL所执行时间的阈值*/  private int slowSqlThreshold = 1000 ;  // getters, setters}

配置文件

pack:  sql:    show_sql: true    show_param: true    slow_sql: true    # 单位毫秒    slow_sql_threshold: 1000

【声明】内容源于网络
0
0
Spring全家桶实战案例
Java全栈开发,前端Vue2/3全家桶;Spring, SpringBoot 2/3, Spring Cloud各种实战案例及源码解读
内容 832
粉丝 0
Spring全家桶实战案例 Java全栈开发,前端Vue2/3全家桶;Spring, SpringBoot 2/3, Spring Cloud各种实战案例及源码解读
总阅读7
粉丝0
内容832