java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > druid配置参数

关于druid配置参数的使用详解

作者:Java程序员 拥抱ai

这篇文章主要介绍了关于druid配置参数的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

druid配置参数的使用

例子1

spring:
  #数据库配置
  datasource:
    #这里使用的是德鲁伊数据库连接池
    druid:
      db-type: com.alibaba.druid.pool.DruidDataSource
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: 
      username: 
      password: 
      #初始连接数量
      initial-size: 20
      #最小连接数量
      min-idle: 20
      #最大连接数量
      max-active: 1000
      #获取连接等待超时的时间 单位是毫秒,这里配置60秒
      max-wait: 60000
      #查询超时时间 单位是毫秒 这里配置6秒,如果你查询数据量大的情况下这个配置的大一点,不然查询报错抛出异常
      query-timeout: 6000
      #事务发生回滚后多长时间响应用户单位是毫秒,这里这个时间和mysql的innodb_lock_wait_timeout是相加的关系,如果你在mysql配置文件配置了这个时间,那时间就会相加
      transaction-query-timeout: 2000
      #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位毫秒, 这里配置10分钟去检测一次是否存在空闲连接
      time-between-eviction-runs-millis: 600000
      #最大等待线程数量 这里配置50,当你的连接满了之后,其他的连接进入等待池子,最大的数量为50,超过这个数量的线程舍弃掉
      max-wait-thread-count: 50
      #最小连接时间,也就是说一条线程的空闲时间超过了这个数就会被关闭,这里的单位是毫秒,这里设置为10分钟
      min-evictable-idle-time-millis: 600000
      #最大连接时间,也就是说一条线程的空闲时间>最小连接时间,也>最大连接时间,直接关闭 这里设置为30分钟
      max-evictable-idle-time-millis: 1800000
      #申请连接时直接检测连接是否有效
      test-on-borrow: true
      #申请连接时检测空闲时间,根据空闲时间再检测连接是否有效
      test-while-idle: true
      #归还连接时检测连接是否有效,这个配置生产最好不要配置设置为ture,有性能问题
      test-on-return: true
      #初始连接失败是否抛出异常
      init-exception-throw: true
      #开启检查运行的状态
      check-execute-time: true
      #这里是健康检查sql语句,配合下面的使用
      validation-query: SELECT 1 FROM DUAL
      #多长时间进行一次心跳去检查是否连接了mysql,这里配置为30分钟
      validation-query-timeout: 1800000
      #连接出错后在尝试3次
      connection-error-retry-attempts: 3
      #数据库宕机后启用重连机制,true表示失败后立即断开,false表示失败后进行断线重连尝试,配合上面的重连次数
      break-after-acquire-failure: false
      #重连的间隔 单位毫秒 这里设置30分钟重连
      time-between-connect-error-millis: 1800000
      #开启保持连接有效性
      keep-alive: true
      #只有空闲时间大于keep-alive-between-time-millis并且小于min-evictable-idle-time-millis该参数才会有用,单位为毫秒 这里设置为15分钟
      #这个时间必须大于检测时间time-between-eviction-runs-millis
      keep-alive-between-time-millis: 900000
      #这个目前不知道做什么的,字面意思看是杀死什么时候的读的socket超时时间
      #kill-when-socket-read-timeout:

例子2

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mydb
    username: myuser
    password: mypass
    druid:
      # 连接池初始化时创建的连接数。
      # 应根据实际应用场景设置,确保应用程序启动时即可获取数据库连接。
      initial-size: 5
      # 连接池中最小的空闲连接数,保证即使在低负载时也有足够的连接可用。
      min-idle: 5
      # 连接池中最大活动连接数,限制并发请求时的数据库连接数,避免过多的连接消耗系统资源。
      max-active: 20
      # 获取连接时的最大等待时间,超过该时间则抛出异常。单位通常为毫秒。
      max-wait: 60000
      # 两个连接检查之间的时间间隔,用于检测和清理空闲过久的连接。单位为毫秒。
      time-between-eviction-runs-millis: 60000
      # 连接在被清理前的最小空闲时间。单位为毫秒。
      min-evictable-idle-time-millis: 300000
      # 用于验证连接有效性的 SQL 查询语句。
      validation-query: SELECT 1 FROM DUAL
      # 如果为真,则连接空闲时会被定期测试有效性。
      test-while-idle: true
      # 如果为真,在获取连接前进行有效性测试。
      test-on-borrow: false
      # 如果为真,在归还连接时进行有效性测试。
      test-on-return: false
      # 是否开启 PreparedStatement 缓存。
      pool-prepared-statements: true
      # 单个连接上缓存的 PreparedStatement 最大数量。
      max-pool-prepared-statement-per-connection-size: 20
      # 指定要启用的过滤器,如 stat, log4j, wall 等,用于监控和日志记录。
      filters: stat,wall,log4j
      # 连接属性,例如配置日志级别或慢 SQL 阈值。
      connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      # 是否自动回收超时连接
      remove-abandoned: true
      # 超时时间,单位秒
      remove-abandoned-timeout: 1800
      # 是否记录被遗弃的连接
      log-abandoned: true
      # StatViewServlet配置,访问监控页面
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        login-username: admin
        login-password: admin
        reset-enable: false
      # 防火墙配置
      wall:
        config:
          multi-statement-allow: false

Druid数据库连接池参数详解

基本连接信息

连接池大小相关参数

连接等待与超时参数

连接检测与清理参数

连接验证相关参数

过滤器相关参数

统计相关参数

SQL 防火墙相关参数

连接遗弃相关参数

监控界面相关参数

根据业务实际情况合理配置 Druid 数据库连接池参数,能够显著提升应用的数据库访问性能和稳定性。开发者应依据实际业务需求和系统资源状况,对上述参数进行细致调整,以实现最佳效果。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文