Druid号称是Java语言中最好的数据库连接池
Druid支持所有JDBC兼容的数据库,相比其他的数据库连接池,它针对oracle,mysql等还做了特殊优化。(如针对Oracle的PSCache优化了内存占用)
此外还支持监控统计功能,能监控SQL的执行时间、ResultSet持有时间、返回行数、更新行数、错误次数、错误堆栈信息,可以清楚知道连接池和SQL的工作情况,能够详细统计SQL的执行性能,方便分析数据库的访问性能。
配置
(基于springboot)
引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
</dependency>
我们只需在application配置文件设置参数即可
以application.yml为例
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
primary:
url:
username:
password:
driver-class-name:
#初始化连接池的连接数量 大小,最小,最大
initial-size: 5
min-idle: 5
max-active: 20
#配置获取连接等待超时的时间
max-wait: 60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 30000
# 配置一个连接在池中最大生存的时间,单位是毫秒
max-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM user
test-while-idle: true
test-on-borrow: true
test-on-return: false
# 是否缓存preparedStatement,也就是PSCache
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,slf4j
filter:
stat:
merge-sql: true
slow-sql-millis: 5000
这里因为我配置了多个数据源,所以写了primary做区分,如果你只有单个数据源,那么去掉primary那一层就可以直接用