常见的连接池对比
对三种连接池(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配置
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.maximum-pool-size=100
spring.datasource.hikari.idle-timeout=60000
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
spring.datasource.druid.filters=stat,wall
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.login-username=admin
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