Druid配置

Druid配置

  • 1. 配置
  • 99. 参考资料

部分资料引用自各路大神,具体见“99.参考资料”,感谢各路大神的鼎力支持!!!

1. 配置

相关的配置说明都在下面的配置中进行了讲解。

# ######################################################################
# 【2- 阿里druid(德鲁伊)配置】,所有属性参见【com.alibaba.druid.pool.DruidDataSourceFactory.ALL_PROPERTIES】 #
# ######################################################################
# 所有属性配置有两种方式: 1- 就在properties这里配置;2- 通过 java -D的方式设置System.properties(系统属性)[System.getProperties()获取]
# https://github.com/alibaba/druid/wiki/Druid连接池介绍
# https://github.com/alibaba/druid/wiki/DruidDataSource配置属性列表
# ######################################################################
# 【2-1 阿里druid(德鲁伊)连接池配置】                                  #
# ######################################################################
# 数据库数据源配置
spring.datasource.name=druid-hao-ac
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 【注意】:连接池的配置在 com.alibaba.druid.pool.DruidAbstractDataSource 中基本都有默认配置
# 初始化时建立物理连接个数
spring.datasource.druid.initial-size=5
# 初始化时最小空闲连接池数量
spring.datasource.druid.min-idle=5
# 最大连接池数量
spring.datasource.druid.max-active=10
# 获取连接等待超时时间(单位为毫秒)
# 如果配置了maxWait,则缺省启用公平锁,并发效率会有所下降。可以配置useUnfairLock = true使用非公平锁。
spring.datasource.druid.max-wait=50000
# 一个连接在池中最小生存时间(单位为毫秒)
spring.datasource.druid.min-evictable-idle-time-millis=180000
# 间隔多久进行一次检测,检测需要关闭空闲连接(单位为毫秒)。test-while-idle的判断依据
spring.datasource.druid.time-between-eviction-runs-millis=60000
# 用来检测连接是否有效的SQL,要求是一个查询语句。
# 如果validation-query为null,则test-while-idle、test-on-borrow、test-on-return都不会起作用
spring.datasource.druid.validation-query=SELECT 'x'
# 申请连接时,检测空闲时间是否大于time-between-eviction-runs-millis,如果大于,则执行validation-query是否有效。建议开启,不影响性能,并保证安全性。
spring.datasource.druid.test-while-idle=true
# 申请连接时,执行validation-query检测连接是否有效,没必要,降低性能。指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个.
spring.datasource.druid.test-on-borrow=false
# 归还连接时,执行validation-query检测连接是否有效,做了这个配置会降低性能。
spring.datasource.druid.test-on-return=false
# 启用相应的内置Filter: 属性类型是字符串,通过别名的方式配置扩展插件,配置多个英文逗号分隔。
# 常用的插件有: 监控统计用的stat;日志用的slf4j;防御sql注入的wall(防火墙)。
# 别名映射配置参见 "druid-1.1.9.jar!/META-INF/druid-filter.properties"
spring.datasource.druid.filters=stat,slf4j,wall
# 连接属性配置: 包含filter的相关属性。参见 com.alibaba.druid.spring.boot.autoconfigure.stat.DruidFilterConfiguration
# stat(监控统计)的属性: mergeSql(sql合并)和慢sql的时间标准(超过指定时间的被认定为是慢sql)。参见 com.alibaba.druid.filter.stat.StatFilter
# 也可以这样配置 spring.datasource.druid.filter.stat.merge-sql 和 spring.datasource.druid.filter.stat.slow-sql-millis
# 如何被加载的?详情参见 com.alibaba.druid.pool.DruidDataSourceFactory
# createDataSource(java.util.Properties) -> createDataSource(java.util.Map) -> config: dataSource.setConnectionProperties("connection-properties");
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=3000
# PSCache内存占用优化对于支持游标的数据库(Oracle、SQL Server、DB2等,不包括MySql),PSCache可以大幅度提升SQL执行性能。
# 一个PreparedStatement对应服务器一个游标,如果PreparedStatement被缓存起来重复执行,PreparedStatement没有被关闭,服务器端的游标就不会被关闭,性能提高非常显著.
# 在类似“SELECT * FROM T WHERE ID = ?”这样的场景,性能可能是一个数量级的提升。
# 但在Oracle JDBC Driver中,其他的数据库连接池(DBCP、JBossDataSource)会占用内存过多,极端情况可能大于1G。
# Druid调用OracleDriver提供管理PSCache内部API。
# 打开PSCache,并指定每个连接上PSCache的大小。
# 【oracle设为true,mysql设为false。分库分表较多推荐设置为false】
#spring.datasource.druid.pool-prepared-statements=false
# 指定每个连接上PSCache的大小,当大于0时,pool-prepared-statements自动触发修改为true
#spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
# ######################################################################
# 【2-2 阿里druid(德鲁伊)监控配置】                                    #
# ######################################################################
# 还有一种配置方式,就是在/resource/WEB-INF/web.xml中通过web方式配置监控信息。详情参见 com.alibaba.druid.support.http.StatViewServlet 和 com.alibaba.druid.support.http.WebStatFilter
# ######################################################################
# 【2-2-1 Druid监控页面配置】                                          #
# ######################################################################
# https://github.com/alibaba/druid/wiki/配置_StatViewServlet配置
# 详情参见 com.alibaba.druid.spring.boot.autoconfigure.stat.DruidStatViewServletConfiguration: 通过ServletRegistrationBean注册servlet(DruidStatProperties.StatViewServlet)
# 详情参见 com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties.StatViewServlet,就是一个标准的javax.servlet.http.HttpServlet
# 是否启用StatViewServlet(监控页面),默认开启
spring.datasource.druid.stat-view-servlet.enable=true
# 拦截路径
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
# 登录名
spring.datasource.druid.stat-view-servlet.login-username=thDruid
# 登录密码
spring.datasource.druid.stat-view-servlet.login-password=thDruid
# ######################################################################
# 【2-2-2 Druid监控配置】                                              #
# ######################################################################
# https://github.com/alibaba/druid/wiki/配置_配置WebStatFilter
# 详情参见 com.alibaba.druid.spring.boot.autoconfigure.stat.DruidWebStatFilterConfiguration: 通过FilterRegistrationBean注册javax.servlet.Filter(DruidStatProperties.WebStatFilter)
# 详情参见 com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties.WebStatFilter
# 这里就不配置了,默认是开启的,并且DruidWebStatFilterConfiguration配置的已经足够了,各路神仙按需配置吧。

99. 参考资料

  • https://github.com/alibaba/druid/wiki/常见问题
  • druid简单教程

你可能感兴趣的:(数据库连接池)