连接池配置详解

  • 常见的连接池对比
  • HikariCP 连接池
    • 配置介绍
    • 例子
      • prooerties配置
      • yml 配置
  • Druid连接池
    • 配置介绍
    • 例子
      • prooerties配置
      • yml 配置

常见的连接池对比

对三种连接池(HikariCP、Druid和C3P0)性能的简要对比:

1. `HikariCP`:
   - 性能优势:HikariCP是目前性能最好的连接池之一,具有出色的性能和高度的并发能力。它具有快速的连接获取和释放机制,以及低延迟的连接池管理。
   - 适用场景:适用于高并发的应用程序,对连接获取和释放的响应时间要求较高的场景。

2. `Druid`:
   - 性能特点:Druid连接池在性能方面表现良好,具有很好的连接管理和监控功能。它提供了丰富的统计信息和监控页面,可以帮助你更好地了解应用程序的数据库访问情况。
   - 适用场景:适用于对连接池管理和统计监控有较高要求的应用程序。

3. `C3P0`:
   - 性能特点:C3P0是一个成熟且广泛使用的连接池,具有稳定的性能和可靠的连接管理。它提供了许多配置选项,可以根据需求进行灵活调整。
   - 适用场景:适用于中小型应用程序或对连接池功能要求相对简单的场景。

HikariCP 连接池

配置介绍

当配置HikariCP连接池时,你可以使用以下属性来调整连接池的行为和性能。

1. `spring.datasource.hikari.minimum-idle`
   - 描述:连接池中保持的最小空闲连接数。
   - 默认值:10
   - 建议值:通常设置为5到10之间的较小值,以确保有足够的连接可用。

2. `spring.datasource.hikari.maximum-pool-size`
   - 描述:连接池中允许的最大连接数。
   - 默认值:10
   - 建议值:根据你的应用程序负载和数据库的最大连接数限制,设置一个适当的值。可以根据负载测试和数据库配置来确定最佳值。

3. `spring.datasource.hikari.idle-timeout`
   - 描述:连接在池中闲置的最长时间(以毫秒为单位)。超过该时间的连接将被释放。
   - 默认值:600000(10分钟)
   - 建议值:根据你的应用程序的闲置连接频率和数据库的要求,设置一个合适的值。较短的超时时间可确保连接池中的连接及时释放,但可能会增加连接获取的开销。

4. `spring.datasource.hikari.pool-name`
   - 描述:连接池的名称。
   - 默认值:自动生成的唯一名称
   - 建议值:可以根据你的应用程序命名约定设置一个有意义的名称。

5. `spring.datasource.hikari.connection-timeout`
   - 描述:连接获取的超时时间(以毫秒为单位)。如果在指定的时间内无法获取到连接,将抛出异常。
   - 默认值:30000(30秒)
   - 建议值:根据你的应用程序和数据库的性能,设置一个适当的值。较短的超时时间可确保连接获取的响应性,但在高负载或复杂查询的情况下可能会导致连接获取失败。

6. `spring.datasource.hikari.max-lifetime`
   - 描述:连接的最长生命周期(以毫秒为单位)。如果连接存在的时间超过此值,将被释放并重新创建。
   - 默认值:1800000(30分钟)
   - 建议值:根据数据库服务器的配置和资源管理策略,设置一个合适的值。较长的生命周期可以减少连接的创建和关闭开销,但可能会导致某些数据库配置的限制。

以上是一些常用的连接池配置属性,你可以根据应用程序的需求和数据库的配置进行适当的调整。还有其他更高级的配置属性,如连接测试、事务隔离级别等,可以根据具体需求在配置文件中添加。详细的配置属性和说明可以参考HikariCP官方文档。

例子

prooerties配置

#最小空闲连接,默认值10,小于0或大于maximum-pool-size,都会重置为maximum-pool-size,默认等于maximum-pool-size,建议不设置此值
 spring.datasource.hikari.minimum-idle=10
#最大连接数,小于等于0会被重置为默认值10;大于零小于1会被重置为minimum-idle的值
spring.datasource.hikari.maximum-pool-size=100 
# 60秒 允许连接在池中保持空闲状态的最长时间
spring.datasource.hikari.idle-timeout=60000
# 120秒 连接在池中最大生存时间
spring.datasource.hikari.max-lifetime=120000 

yml 配置

 spring:
 	datasource:
 		hikari:
 			minimum-idle: 10
 			maximum-pool-size: 100
 			idle-timeout: 60000 
 			hikari.max-lifetime: 120000 

Druid连接池

配置介绍

1. `spring.datasource.druid.initial-size`
	- 描述:初始化连接池大小
	- 默认值:10
	- 建议值:根据应用程序的负载和并发需求适当调整。
	
2. `spring.datasource.druid.min-idle` 
	- 描述:最小空闲连接数
	- 默认值:100
	- 建议值:建议设置一个合适的值以保持足够的连接可用。
	
3. `spring.datasource.druid.max-active` 
	- 描述:最大活跃连接数
	- 默认值:10
	- 建议值:建议根据数据库服务器的配置和资源限制进行调整。

4. `spring.datasource.druid.max-wait` 
	- 描述:获取连接的最大等待时间,单位为毫秒
	- 默认值:60000
	- 建议值:建议根据应用程序对连接获取的响应性需求进行调整。

5. `spring.datasource.druid.time-between-eviction-runs-millis` 
	- 描述:空闲连接检测线程的运行间隔时间,单位为毫秒
	- 默认值:60000
	- 建议值:建议根据应用程序的闲置连接频率和数据库的要求进行调整。

6. `spring.datasource.druid.min-evictable-idle-time-millis` 
	- 描述:连接在池中保持的最小空闲时间,单位为毫秒
	- 默认值:300000
	- 建议值:建议根据应用程序的负载和数据库的要求进行调整。

7. `spring.datasource.druid.max-evictable-idle-time-millis` 
	- 描述:连接在池中保持的最大空闲时间,单位为毫秒
	- 默认值:600000
	- 建议值:建议根据应用程序的负载和数据库的要求进行调整。

8. `spring.datasource.druid.filters`
	- 描述:连接池的过滤器,多个过滤器之间使用逗号分隔。常用的过滤器包括 `stat`(用于统计SQL执行性能)和 `wall`(用于SQL防火墙)等
	- 默认值:
	- 建议值:

9. `spring.datasource.druid.stat-view-servlet.enabled`
	- 描述:是否启用Druid监控页面
	- 默认值: false
	- 建议值:在开发和调试阶段启用监控页面以便进行性能监测和调优

10. `spring.datasource.druid.stat-view-servlet.url-pattern`
	- 描述:Druid监控页面的访问路径
	- 默认值: /druid/*
	- 建议值:建议保持默认值

11. `spring.datasource.druid.stat-view-servlet.login-username`
	- 描述:Druid监控页面的登录用户名
	- 默认值: 
	- 建议值:建议设置一个用户名以增加访问安全性

12. `spring.datasource.druid.stat-view-servlet.login-password`
	- 描述:Druid监控页面的登录密码
	- 默认值: 
	- 建议值:建议设置一个密码以增加访问安全性

例子

prooerties配置

# 连接池配置
# 初始连接池大小
spring.datasource.druid.initial-size=10
# 最小空闲连接数
spring.datasource.druid.min-idle=10
# 最大活跃连接数
spring.datasource.druid.max-active=100
# 获取连接的最大等待时间(毫秒)
spring.datasource.druid.max-wait=60000
# 空闲连接检测线程的运行间隔时间(毫秒)
spring.datasource.druid.time-between-eviction-runs-millis=60000
# 连接在池中保持的最小空闲时间(毫秒)
spring.datasource.druid.min-evictable-idle-time-millis=300000
# 连接在池中保持的最大空闲时间(毫秒)
spring.datasource.druid.max-evictable-idle-time-millis=600000

# 配置连接池的监控和统计
# 过滤器配置,这里配置了stat过滤器用于统计SQL执行性能和wall过滤器用于SQL防火墙
spring.datasource.druid.filters=stat,wall
# 是否启用Druid监控页面
spring.datasource.druid.stat-view-servlet.enabled=true
# Druid监控页面的访问路径
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
# Druid监控页面的登录用户名
spring.datasource.druid.stat-view-servlet.login-username=admin
# Druid监控页面的登录密码
spring.datasource.druid.stat-view-servlet.login-password=admin123

yml 配置

spring:
  datasource:
    druid:
      initial-size: 10
      min-idle: 10
      max-active: 100
      max-wait: 60000
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      max-evictable-idle-time-millis: 600000
      filters: stat,wall
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        login-username: admin
        login-password: admin123

你可能感兴趣的:(数据库,java)