在现代企业级应用开发中,SQL 的性能监控和优化是保证系统稳定性和性能的重要环节。Druid 是阿里巴巴开源的一款高效的数据库连接池,不仅具有强大的连接池功能,还提供了强大的 SQL 监控能力。本文将介绍如何结合 SpringBoot 和 Druid,实现对 SQL 运行情况的实时监控。
一、Druid 的优势
高性能连接池:Druid 提供高效稳定的连接池实现。
SQL 监控:支持 SQL 性能分析和慢查询记录。
多数据源支持:支持多种数据库驱动和多数据源配置。
Web 控制台:提供简单易用的 Web 管理界面。
二、项目依赖
在 SpringBoot 项目中引入以下依赖:
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.16</version> </dependency>
复制
三、配置 Druid 数据源
在 application.yml
文件中添加 Druid 的配置。
spring: datasource: druid: url: jdbc:mysql://localhost:3306/demo?useSSL=false&serverTimezone=UTC username: root password: password driver-class-name: com.mysql.cj.jdbc.Driver # Druid 连接池配置 initial-size: 5 max-active: 20 min-idle: 5 max-wait: 60000 # SQL 监控配置 filters: stat,wall,slf4j stat-view-servlet: enabled: true url-pattern: /druid/* login-username: admin login-password: admin
复制
四、开启 Druid Web 控制台
通过上述配置,Druid 的 Web 控制台可以通过 /druid
访问。启动项目后,在浏览器输入 http://localhost:8080/druid
,登录后即可查看连接池状态和 SQL 监控信息。
五、集成 SQL 慢查询日志
为进一步分析性能问题,可以开启慢查询日志。
在 application.yml
中添加:
spring: datasource: druid: connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
复制
mergeSql
:将多次执行的相同 SQL 合并显示。slowSqlMillis
:设置慢查询的时间阈值(单位:毫秒)。
六、代码示例
在 @Configuration
中创建自定义数据源配置:
@Configuration public class DruidConfig { @Bean @ConfigurationProperties(prefix = "spring.datasource.druid") public DataSource druidDataSource() { return new DruidDataSource(); } @Bean public ServletRegistrationBean<StatViewServlet> druidStatViewServlet() { ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*"); bean.addInitParameter("loginUsername", "admin"); bean.addInitParameter("loginPassword", "admin"); return bean; } @Bean public FilterRegistrationBean<WebStatFilter> druidWebStatFilter() { FilterRegistrationBean<WebStatFilter> bean = new FilterRegistrationBean<>(new WebStatFilter()); bean.addUrlPatterns("/*"); bean.addInitParameter("exclusions", "*.js,*.css,/druid/*"); return bean; } }
复制
七、监控页面解读
基本监控:展示数据源的连接数、活跃数等基本信息。
SQL 统计:展示执行的 SQL 语句,包括执行次数、耗时等。
慢查询分析:列出所有超过阈值的慢查询,方便开发者优化。
八、性能优化建议
设置合适的连接池大小:根据应用的并发需求调整连接池大小,避免资源浪费。
监控慢查询:通过慢查询分析,优化高耗时 SQL。
使用索引:对慢查询的 SQL 语句,确认是否使用了合理的索引。
九、总结
通过 SpringBoot 集成 Druid,可以轻松实现对 SQL 的运行监控,并快速发现性能瓶颈。Druid 提供的 Web 控制台和慢查询功能,极大地方便了开发和运维人员进行数据库性能分析和优化。