Spring Boot 集成 Druid 监控数据源

关注Java后端技术全栈”**

回复“面试”获取全套大厂面试资料

Druid 介绍

Druid 是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和 SQL 解析器组成,该项目主要是为了扩展 JDBC 的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计 SQL 信息、SQL 性能收集、SQL 注入检查、SQL 翻译等,程序员可以通过定制来实现自己需要的功能。通常叫"德鲁伊的"

Druid 首先是一个数据库连接池,但它不仅仅是一个数据库连接池,还包含了一个 ProxyDriver,一系列内置的 JDBC 组件库,一个 SQL Parser。在 Java 的世界中 Druid 是监控做的最好的数据库连接池,在功能、性能、扩展性方面,也有不错的表现。

Druid 有何用?

  • 替换其他 Java 连接池,Druid 提供了一个高效、功能强大、可扩展性好的数据库连接池。
  • 可以监控数据库访问性能,Druid 内置提供了一个功能强大的 StatFilter 插件,能够详细统计 SQL 的执行性能,这对于线上分析数据库访问性能有很大帮助。
  • 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题,DruidDruiver 和 DruidDataSource 都支持 PasswordCallback。
  • SQL 执行日志,Druid 提供了不同的 LogFilter,能够支持 Common-Logging、Log4j 和 JdkLog,可以按需要选择相应的 LogFilter,监控应用的数据库访问情况。
  • 扩展 JDBC,如果你要对 JDBC 层有编程的需求,可以通过 Druid 提供的 Filter 机制,很方便编写 JDBC 层的扩展插件。

Spring  Boot快速集成Druid

阿里也未Druid提供了 Spring Boot Starter。官网这样解释:

Druid Spring Boot Starter 用于帮助你在 Spring Boot 项目中轻松集成 Druid 数据库连接池和监控。

Druid Spring Boot Starter 主要做了哪些事情呢?其实这个组件包很简单,主要提供了很多自动化的配置,按照 Spring Boot 的理念对很多内容进行了预配置,让我们在使用的时候更加的简单和方便。

添加依赖包


    com.alibaba
    druid
    1.1.10



    com.alibaba
    druid-spring-boot-starter
    1.1.10

application.properties中添加druid的配置项

properties
#config druid
#连接池的设置
#初始化时建立物理连接的个数
spring.datasource.druid.initial-size=5
#最小连接池数量
spring.datasource.druid.min-idle=5
#最大连接池数量 maxIdle已经不再使用
spring.datasource.druid.max-active=20
#获取连接时最大等待时间,单位毫秒
spring.datasource.druid.max-wait=60000
#申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
spring.datasource.druid.test-while-idle=true
#既作为检测的间隔时间又作为testWhileIdel执行的依据
spring.datasource.druid.time-between-eviction-runs-millis=60000
#销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接
spring.datasource.druid.min-evictable-idle-time-millis=30000
#用来检测连接是否有效的sql 必须是一个查询语句
#mysql中为 select 'x'
#oracle中为 select 1 from dual
spring.datasource.druid.validation-query=select 'x'
#申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
spring.datasource.druid.test-on-borrow=false
#归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
spring.datasource.druid.test-on-return=false
#当数据库抛出不可恢复的异常时,抛弃该连接
#spring.datasource.druid.exception-sorter=true
#是否缓存preparedStatement,mysql5.5+建议开启
#spring.datasource.druid.pool-prepared-statements=true
#当值大于0时poolPreparedStatements会自动修改为true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
#配置扩展插件
spring.datasource.druid.filters=stat,wall
#通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
#合并多个DruidDataSource的监控数据
spring.datasource.druid.use-global-data-source-stat=true
#设置访问druid监控页的账号和密码,默认没有
#spring.datasource.druid.stat-view-servlet.login-username=admin
#spring.datasource.druid.stat-view-servlet.login-password=admin

然后启动项目。

访问地址:http://localhost:8080/druid/webapp.html

Spring Boot 集成 Druid 监控数据源_第1张图片

如果把配置项中

spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin

去掉注释,再次启动。

访问地址:http://localhost:8080/druid/webapp.html

Spring Boot 集成 Druid 监控数据源_第2张图片

登录进去

Spring Boot 集成 Druid 监控数据源_第3张图片

首页会展示项目使用的 JDK 版本、数据库驱动、JVM 相关统计信息。根据上面的菜单可以看出 Druid 的功能非常强大,支持数据源、SQL 监控、SQL 防火墙、URI 监控等很多功能。

我们这里请求一下前面文

http://localhost:8080/mybatis

Spring Boot 集成 Druid 监控数据源_第4张图片

点击SQL监控

Spring Boot 集成 Druid 监控数据源_第5张图片

可以看到SQL的执行情况,还可以设置刷新SQL监控的时间。

Spring Boot 集成 Druid 监控数据源_第6张图片

这里的 SQL 监控会将项目中具体执行的 SQL 打印出来,展示此 SQL 执行了多少次、每次返回多少数据、执行的时间分布是什么。这些功能非常的实用,方便我们在实际生产中查找出慢 SQL,最后对 SQL 进行调优。

OK,今天就分享到此,是不是觉得Spring Boot集成Druid其实还是蛮简单的。

码字不易,望点 在看+分享,谢谢!

推荐阅读

如何优雅的导出 Excel

终于明白为什么要加 final 关键字了!

你可能感兴趣的:(java,springboot)