暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用 SpringBoot + Druid,实现监控 SQL 运行情况

原创 Jagger 2024-12-16
162

在现代企业级应用开发中,SQL 的性能监控和优化是保证系统稳定性和性能的重要环节。Druid 是阿里巴巴开源的一款高效的数据库连接池,不仅具有强大的连接池功能,还提供了强大的 SQL 监控能力。本文将介绍如何结合 SpringBoot 和 Druid,实现对 SQL 运行情况的实时监控。

一、Druid 的优势

  1. 高性能连接池:Druid 提供高效稳定的连接池实现。

  2. SQL 监控:支持 SQL 性能分析和慢查询记录。

  3. 多数据源支持:支持多种数据库驱动和多数据源配置。

  4. 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;
    }
}
复制

七、监控页面解读

  1. 基本监控:展示数据源的连接数、活跃数等基本信息。

  2. SQL 统计:展示执行的 SQL 语句,包括执行次数、耗时等。

  3. 慢查询分析:列出所有超过阈值的慢查询,方便开发者优化。

八、性能优化建议

  1. 设置合适的连接池大小:根据应用的并发需求调整连接池大小,避免资源浪费。

  2. 监控慢查询:通过慢查询分析,优化高耗时 SQL。

  3. 使用索引:对慢查询的 SQL 语句,确认是否使用了合理的索引。

九、总结

通过 SpringBoot 集成 Druid,可以轻松实现对 SQL 的运行监控,并快速发现性能瓶颈。Druid 提供的 Web 控制台和慢查询功能,极大地方便了开发和运维人员进行数据库性能分析和优化。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论