四时宝库

程序员的知识宝库

数据库连接池- druid使用说明(数据库连接池怎么使用)

概念

Druid是一款高性能、可扩展、功能丰富的数据库连接池。它由阿里巴巴开发,是一个开源项目,被广泛应用在各种Java应用程序中。

特点

  • 高性能:Druid的连接池使用了一些优化技巧,可以提升连接池的性能和稳定性,并降低锁竞争和资源消耗。
  • 可扩展:Druid支持基于插件的架构,可以方便地扩展和定制功能,比如添加日志和监控功能。
  • 功能丰富:Druid不仅仅具备连接池的基本功能,还支持很多高级功能,如:防SQL注入、监控统计、缓存管理、数据源路由等。
  • 易于配置:Druid采用简单直观的XML配置方式,使得配置起来非常容易。
  • 易于与Spring集成:Druid提供了简单易用的DataSource接口,很容易与Spring集成,只需要修改配置文件即可。
  • 提供监控:Druid提供了丰富的监控工具,可以监控应用程序对数据库的访问情况,包括访问次数、访问时间、SQL执行时间等。

属性

  1. 连接池配置:

这些属性都是用于设置数据库连接信息的,指定了数据库驱动、连接字符串、用户名和密码等。这些属性是配置 Druid 数据源时必须设置的。

  • driverClassName:数据库驱动类名。
  • url:数据库连接URL。
  • username:数据库用户名。
  • password:数据库密码。
  • queryTimeout:连接获取到 statement 执行查询开始到查询执行结束的总时间不能超过该属性设置的值(秒),如果在规定的时间内未能得到结果,查询将被中止并抛出 TimeoutException 异常。
  • socketTimeout:表示建立与数据库服务器之间的连接时等待服务器响应的超时时间(毫秒),即从发起请求到接收到响应的最长等待时间。在网络通信中,socketTimeout 可以设置为一个较大的值以避免连接超时问题,但是设置过大可能会导致系统响应变慢。
  • connectTimeout:表示建立数据库连接时的超时时间,单位毫秒。
  1. 连接池大小相关属性:
  • initialSize:初始化连接池时创建的连接数量。
  • maxActive:连接池中最大的活动连接数。
  • minIdle:连接池中最小的空闲连接数。
  • maxIdle:连接池中最大的空闲连接数。
  • maxWait:获取连接的最大等待时间,单位毫秒。
  1. 连接校验和保活相关属性:

这些属性是用于控制连接池大小和空闲连接回收等方面的。通过合理配置这些属性,可以确保连接池的性能和资源使用都得到优化。

  • validationQuery:用于检测连接是否有效的SQL语句。
  • validationQueryTimeout:表示连接验证查询的超时时间,单位为秒。
  • testOnBorrow:借出连接时是否进行验证。
  • testOnReturn:归还连接时是否进行验证。
  • testWhileIdle:连接空闲时是否进行验证。
  • timeBetweenEvictionRunsMillis:表示连接空闲状态检测的时间间隔,单位为毫秒。
  • minEvictableIdleTimeMillis:最小空闲时间。如果连接池中空闲的连接数大于 minIdle(最小空闲连接数),并且那部分连接的空闲时间大于minEvictableIdleTimeMillis(最小空闲时间),则会关闭这些连接。
  • removeAbandoned:是否自动回收废弃(超过时间范围未关闭)的连接。表示是否自动回收因长时间未关闭而废弃的连接,默认 false。
  • removeAbandonedTimeout:废弃连接的回收时间,单位为秒。
  • logAbandoned:是否对废弃连接进行日志记录,默认false。
  1. 监控和日志相关属性:

这些属性是用于连接池监控和统计等方面的。

  • filters:配置连接池的拦截器,可以对连接进行过滤、扩展或者插入自定义逻辑。
  • connectionProperties:连接属性,可以设置一些特殊的连接属性,如字符集等。
  • poolPreparedStatements:是否缓存 PreparedStatement,默认不缓存。
  • maxPoolPreparedStatementPerConnectionSize:缓存 PreparedStatement 的最大数目,负数表示不限制。
  • useGlobalDataSourceStat:是否开启全局监控,默认开启。

springboot 中如何集成 配置druid?

要在 Spring Boot 项目中集成并配置 Druid 数据库连接池,你可以按照以下步骤进行操作:

  1. 首先,在 Maven 或 Gradle 中添加 Druid 和数据库驱动的依赖。例如,对于 Maven 项目,在 pom.xml 文件中添加如下依赖:
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.6</version>
</dependency>

<dependency>
    <!-- 根据你使用的数据库选择对应的驱动,这里以 MySQL 为例 -->
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>
  1. 在 application.properties 或 application.yml 文件中配置 Druid 数据库连接池的相关属性。
# DataSource Configuration
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/my_database
    username: xxx
    password: xxx
    driver-class-name: com.mysql.cj.jdbc.Driver

# Druid Configuration
spring:
  datasource:
    druid:
      initial-size: 5
      min-idle: 5
      max-active: 20
      max-wait: 60000
      validation-query: SELECT 'x'
      test-on-borrow: false
      test-on-return: false
      test-while-idle: true
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
  1. 最后,在你的 Spring Boot 应用程序中,可以直接通过注解 @SpringBootApplication 或 @EnableAutoConfiguration 来启用自动配置。Druid 数据源将会自动创建并注入到应用程序中。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class YourApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接