druid 通过 druiddatasource + statviewservlet + 慢 sql 阈值配置可实现慢 sql 收集与可视化;需启用 stat 过滤器、设置 slowsqlmillis(如500ms)、开放 /druid/ 路径并登录查看“慢 sql”标签页。

Druid 本身不直接提供 Web 监控后台展示慢 SQL 的完整服务,但通过内置的 DruidDataSource + StatViewServlet(监控页面)+ 合理配置慢 SQL 拦截策略,可以实现慢 SQL 的自动收集、记录和可视化查看。关键在于开启统计、配置慢 SQL 阈值,并确保监控页面可访问。
启用 Druid 的 SQL 统计与慢 SQL 记录
在数据源配置中(如 Spring Boot 的 application.yml),需显式开启统计功能并设置慢 SQL 识别阈值(单位:毫秒):
- spring.datasource.druid.web-stat-filter.enabled=true —— 启用 Web 监控过滤器
- spring.datasource.druid.stat-view-servlet.enabled=true —— 启用监控页面 Servlet
-
spring.datasource.druid.filters=stat,wall —— 至少包含
stat,推荐加wall(防 SQL 注入,也增强日志能力) -
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500 —— 关键!
slowSqlMillis设定慢 SQL 阈值(例如 500ms),mergeSql=true合并相同结构的 SQL 方便聚合分析
访问 Druid 内置监控页面查看慢 SQL
启动应用后,默认可通过以下路径访问监控页(路径可自定义):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 地址:
http://localhost:8080/druid/(Spring Boot 默认上下文路径) - 登录账号密码由配置指定,例如:
spring.datasource.druid.stat-view-servlet.login-username=adminspring.datasource.druid.stat-view-servlet.login-password=123456 - 登录后点击顶部菜单栏的 “SQL 监控” → 切换到 “慢 SQL” 标签页,即可看到按执行时间倒序排列的慢 SQL 列表,含执行时间、参数、发生时间、调用堆栈等信息
补充:让慢 SQL 落盘或对接外部监控(可选增强)
Druid 默认仅内存记录,重启即丢失。如需持久化或接入 Prometheus/Grafana:
-
输出到日志:配置
druid.stat.logSlowSql=true,Druid 会将慢 SQL 打印到 slf4j 日志(需确保 logger level ≥ WARN 或 INFO,视版本而定) -
自定义扩展:实现
DruidDataSourceStatLogger接口,重写logSlowQuery方法,把慢 SQL 推送到 ELK、MQ 或数据库 -
Prometheus 对接:引入
druid-spring-boot-starter2.0+ 版本,它自动暴露 /actuator/metrics/druid.* 端点,配合 Micrometer 可采集 slowQueryCount 等指标
常见问题注意
如果看不到慢 SQL,请检查:
- 是否漏配
filters=stat?没有它,所有统计功能都不生效 -
slowSqlMillis是否设得过大(如 5000)导致实际慢查询未触发?建议先设为 100–500 测试 - 监控页面是否被防火墙或 Spring Security 拦截?需放行
/druid/**路径 - 应用是否使用了多数据源?每个 DruidDataSource 都要单独配置 stat 和 slowSqlMillis
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










