Skip to content

数据库连接池

概述

Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。

适用范围

Pangea v2.0.1.6+

快速上手

1、添加依赖

Sentinel的starter依赖已经添加到了盘古common-core核心包中,使用时,引入common包即可。

html
<!--maven依赖包 -->
<!--阿里数据库连接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>${druid.version}</version>
            </dependency>

2、使用方法(配置参数说明)

driverClassName 根据url自动识别 这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName
url 连接数据库的url,不同数据库不一样
username 连接数据库的用户名
password 连接数据库的密码。如果你不希望密码直接写在配置文件中,可以使用ConfigFilter
initialSize 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
minIdle 最小连接池数量
maxActive 最大连接池数量
maxWait 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,
如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
timeBetweenEvictionRunsMillis 1) Destroy线程会检测连接的间隔时间
2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
validationQuery: 用来检测连接是否有效的sql,要求是一个查询语句
testWhileIdle: 建议配置为true,不影响性能,并且保证安全性。
testOnBorrow: 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
testOnReturn: 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
filters: 属性类型是字符串,通过别名的方式配置扩展插件
maxEvictableIdleTimeMillis: 1000000
slave:enabled 是否使用集群

3、常用配置

sql
datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: oracle.jdbc.OracleDriver
    url: jdbc:oracle:thin:@${ORACLE_HOST:*******}:1521:${ORACLE_PID:*******}
    username: ${ORACLE_NAME:*******}
    password: ${ORACLE_PASSWORD:*******}
    druid:
      initialSize: 10
      minIdle: 5
      maxActive: 15
      maxWait: 60000
      timeBetweenEvictionRunsMillis: 60000
      removeAbandoned: true
      removeAbandonedTimeout: 180
      minEvictableIdleTimeMillis: 300000
      validationQuery: SELECT 1 FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 50
      filters: stat
      maxEvictableIdleTimeMillis: 1000000
      slave:
        enabled: false

参考文档