druid数据源配置参数说明

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: druid数据源配置参数说明


使用druid必须要先引入MySQL

下面是druid数据配置的相关参数

属性

说明

建议值

url

数据库的jdbc连接地址。一般为连接oracle/mysql。示例如下:

mysql : jdbc:mysql://ip:port/dbname?option1&option2&…

oracle : jdbc:oracle:thin:@ip:port:oracle_sid

username

登录数据库的用户名

password

登录数据库的用户密码

initialSize

启动程序时,在连接池中初始化多少个连接

10-50已足够

maxActive

连接池中最多支持多少个活动会话

maxWait

程序向连接池中请求连接时,超过maxWait的值后,认为本次请求失败,即连接池没有可用连接,单位毫秒,设置-1时表示无限等待

100

minEvictableIdleTimeMillis

池中某个连接的空闲时长达到 N 毫秒后, 连接池在下次检查空闲连接时,将回收该连接,要小于防火墙超时设置net.netfilter.nf_conntrack_tcp_timeout_established的设置

见说明部分

timeBetweenEvictionRunsMillis

检查空闲连接的频率,单位毫秒, 非正整数时表示不进行检查

keepAlive

程序没有close连接且空闲时长超过 minEvictableIdleTimeMillis,则会执行validationQuery指定的SQL,以保证该程序连接不会被kill掉,其范围不超过minIdle指定的连接个数。

true

minIdle

回收空闲连接时,将保证至少有minIdle个连接.

与initialSize相同

removeAbandoned

要求程序从池中get到连接后, N 秒后必须close,否则druid 会强制回收该连接,不管该连接中是活动还是空闲, 以防止进程不会进行close而霸占连接。

false,当发现程序有未正常close连接时设置为true

removeAbandonedTimeout

设置druid 强制回收连接的时限,当程序从池中get到连接开始算起,超过此值后,druid将强制回收该连接,单位秒。

应大于业务运行最长时间

logAbandoned

当druid强制回收连接后,是否将stack trace 记录到日志中

true

testWhileIdle

当程序请求连接,连接池在分配连接时,是否先检查该连接是否有效。(高效)

true

validationQuery

检查池中的连接是否仍可用的 SQL 语句,drui会连接到数据库执行该SQL, 如果正常返回,则表示连接可用,否则表示连接不可用

testOnBorrow

程序申请连接时,进行连接有效性检查(低效,影响性能)

false

testOnReturn

程序返还连接时,进行连接有效性检查(低效,影响性能)

false

poolPreparedStatements

缓存通过以下两个方法发起的SQL:

public PreparedStatement prepareStatement(String sql)

public PreparedStatement prepareStatement(String sql,int resultSetType, int resultSetConcurrency)

true

maxPoolPrepareStatementPerConnectionSize

每个连接最多缓存多少个SQL

20

filters

这里配置的是插件,常用的插件有:

监控统计: filter:stat

日志监控: filter:log4j 或者 slf4j

防御SQL注入: filter:wall

stat,wall,slf4j

connectProperties

连接属性。比如设置一些连接池统计方面的配置。

druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

breakAfterAcquireFailure

数据库服务宕机自动重连机制

false

connectionErrorRetryAttempts

连接出错后再尝试连接的次数

3

asyncInit

异步初始化策略

true

 下面开始配置示例

spring:
datasource:

type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/weshop?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&allowMultiQueries=true&useAffectedRows=true
username: weshop
password: Ws1357.

druid:

initial-size: 10 # 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
min-idle: 10 # 最小连接池数量
maxActive: 200 # 最大连接池数量
maxWait: 60000 # 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置
timeBetweenEvictionRunsMillis: 60000 # 检查空闲连接的频率.Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接。
minEvictableIdleTimeMillis: 300000 # 连接的最小生存时间.连接保持空闲而不被驱逐的最小时间
validationQuery: SELECT 1  # 验证数据库服务可用性的sql.用来检测连接是否有效的sql 因数据库方言而差, 例如 oracle 应该写成 SELECT 1 FROM DUAL
testWhileIdle: true # 申请连接时检测空闲时间,根据空闲时间再检测连接是否有效.建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRun
testOnBorrow: false # 申请连接时直接检测连接是否有效.申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
testOnReturn: false # 归还连接时检测连接是否有效.归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
poolPreparedStatements: true # 开启PSCache
maxPoolPreparedStatementPerConnectionSize: 20 #设置PSCache值
connectionErrorRetryAttempts: 3 # 连接出错后再尝试连接三次
breakAfterAcquireFailure: true # 数据库服务宕机自动重连机制
timeBetweenConnectErrorMillis: 300000 # 连接出错后重试时间间隔
asyncInit: true # 异步初始化策略
remove-abandoned: true # 是否自动回收超时连接
remove-abandoned-timeout: 1800 #  超时时间(以秒数为单位) 超过此值后,druid将强制回收该连接
transaction-query-timeout: 6000 # 事务超时时间
filters: stat,wall,log4j2
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
web-stat-filter:
  enabled: true
  url-pattern: "/*"
  exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
stat-view-servlet:
  url-pattern: "/druid/*"
  allow:
  deny:
  reset-enable: false
  login-username: admin
  login-password: admin

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
Oracle Java 关系型数据库
Spring+Mybatis多数据源配置(二)——databaseIdProvider的使用
 在上一篇同系列的博文中,讲到配置多数据源,然后根据config.properties配置不同的数据库,进行切换。而且需要根据不同的数据库,配置不同的mybatis sql映射配置文件,如下: classpath...
2192 0
|
3月前
|
SQL druid 关系型数据库
druid配置详解表
druid配置详解表
184 0
|
4月前
|
SQL Java 关系型数据库
SpringBoot整合JDBC与默认数据源
SpringBoot整合JDBC与默认数据源
41 0
|
4月前
|
XML 监控 druid
SpringBoot整合Druid数据源并配置监控
SpringBoot整合Druid数据源并配置监控
274 1
|
6月前
|
druid 关系型数据库 MySQL
数据源管理(baomidou和druid)
数据源管理(baomidou和druid)
|
10月前
|
SQL 监控 druid
使用Druid数据源并查看监控页面
使用Druid数据源并查看监控页面
1138 0
|
druid Java 数据库连接
使用Druid数据库连接池的配置和JDBC连接详情
使用Druid数据库连接池的配置和JDBC连接详情
290 0
|
监控 druid 数据库
整合Druid数据源
整合Druid数据源
|
SQL 监控 druid
SpringBoot整合Druid配置数据源监控
我们在进行数据访问声明模板和repository之前都需要配置数据源用来连接数据库。数据源就是连接到数据库的一条路径,数据源中并无真正的数据,它仅仅记录的是你连接到哪个数据库,以及如何连接。
388 0
SpringBoot整合Druid配置数据源监控
|
Java 数据安全/隐私保护
kettle的jndi数据源配置文件jdbc.properties中不能有#号
kettle中jndi数据源是使用simple-jndi.jar,默认使用simple-jndi/jdbc.properties配置数据源。 通过下面源码可以看出,配置文件中,#号被认为是注释,因此数据源的密码中不能出现#号。
2353 0