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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于多数据源配置,你可以使用 Druid 数据源来实现。Druid 是一个开源的高性能数据库连接池,可以支持多种数据源类型。 首先,你需要在你的项目中添加 Druid 的依赖。可以在 Maven 或者 Gradle 中添加相应的依赖项。例如,在 Maven 中可以添加以下依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.6</version> </dependency> ``` 接下来,在你的 Spring Boot 配置文件(一般是 application.yml 或 application.properties)中配置数据源信息。以下是一个示例: ```yaml spring: datasource: druid: default-data-source-type: com.alibaba.druid.pool.DruidDataSource druid-one: url: jdbc:mysql://localhost:3306/db1 username: your-username password: your-password driver-class-name: com.mysql.jdbc.Driver druid-two: url: jdbc:mysql://localhost:3306/db2 username: your-username password: your-password driver-class-name: com.mysql.jdbc.Driver ``` 在上面的示例中,我们配置了两个数据源,分别命名为 `druid-one` 和 `druid-two`。你可以根据实际情况配置更多的数据源。 接下来,在你的代码中,你可以使用 `@Qualifier` 注解来指定要使用的数据源。例如: ```java @Autowired @Qualifier("druid-one") private DataSource dataSource; ``` 这样,你就可以在代码中使用 `dataSource` 实例来操作 `druid-one` 数据源数据库连接了。 这是一个基本的多数据源配置示例。根据具体需求,你还可以配置连接池的一些参数,如最大连接数、最小空闲连接数等。你可以参考 Druid 的官方文档来了解更多关于 Druid 数据源配置和使用方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值