1.hikariCp
hickari来自日文,翻译过来就是“光”的意思,这个是为了说明该连接池的性能像光一样,性能非常好。事实上其性能确实非常好。网上有很多评测,综合来说hikariCp的各项指标最好。目前市面常用的老一些的C3p0、DBCP等,已经过时了。其他比较常用的是阿里巴巴开源的druid,也还不错。对于hikariCp。springboot1.x已经崭露头角,进入springboot2.x的时代后hikariCp已经成为spring官方钦定的默认数据源了。
2.hikariCp的一些配置项
hikariCp大部分配置都提供了默认配置。基于默认配置已经能满足大部分需要。但是业务需求毕竟是多变的。所以下面一些常用的配置还是需要认真看一看的
dataSourceClassName
这是DataSourceJDBC驱动程序提供的类的名称。请参阅特定JDBC驱动程序的文档以获取此类名。 默认值:无 ,一般我们如果配置了jdbcUrl 这个属性就不必配置了。
jdbcUrl
这个应该非常熟悉了就是jdbc的数据库连接地址。注意与上面互斥。
username
数据源的用户名。
password
此数据源的密码。
autoCommit
此属性控制从池返回的连接的默认自动提交行为。它是一个布尔值。 默认值:true
connectionTimeout
此属性控制客户端(即您)等待池中连接的最大毫秒数。如果在没有连接可用的情况下超过此时间,则将抛出SQLException。最低可接受的连接超时为250毫秒。 默认值:30000(30秒)
idleTimeout
此属性控制允许连接在池中空闲的最长时间。 此设置仅适用于声明的minimumIdle小于maximumPoolSize。一旦连接池空闲连接数达到最小连接数该配置就动态化了,连接是否空闲退出的最大变化为+30秒,平均变化为+15秒。在此超时之前,连接永远不会被空闲。值为0表示永远不会从池中删除空闲连接。允许的最小值为10000毫秒(10秒)。 默认值:600000(10分钟)
maxLifetime
此属性控制池中连接的最长生命周期。使用中的连接永远不会被回收,只有当它关闭时才会被删除。在逐个连接的基础上,应用轻微的负衰减以避免池中的大量灭绝。 我们强烈建议设置此值,它应比任何数据库或基础结构强加的连接时间限制短几秒。值0表示没有最大寿命(无限寿命),当然主题是idleTimeout设置。 默认值:1800000(30分钟)
connectionTestQuery
如果您的驱动程序支持JDBC4,我们强烈建议您不要设置此属性。这适用于不支持JDBC4的“遗留”驱动程序Connection.isValid() API。这是在从池中给出连接之前执行的查询,以验证与数据库的连接是否仍然存在。再次尝试运行没有此属性的池,如果您的驱动程序不符合JDBC4,HikariCP将记录错误以通知您。 默认值:无
minimumIdle
此属性控制HikariCP尝试在连接池中维护的最小空闲连接数。如果空闲连接低于此值并且池中的总连接数小于maximumPoolSize,则HikariCP将尽最大努力快速有效地添加其他连接。但是,为了获得最高性能和对峰值需求的响应,我们建议不要设置此值,而是允许HikariCP充当固定大小的连接池。 默认值:与maximumPoolSize相同
maximumPoolSize
此属性控制允许连接池中连接数到达的最大值,包括空闲和正在使用的连接。基本上,此值将确定数据库后端的最大实际连接数。对此的合理值最好由您的执行环境决定。当池达到此大小且没有空闲连接可用时,对getConnection()的调用将connectionTimeout在超时前阻塞最多毫秒。请阅读有关游泳池尺寸的信息。 默认值:10
metricRegistry
此属性仅可通过编程配置或IoC容器获得。此属性允许您指定池使用的Codahale / Dropwizard 实例MetricRegistry来记录各种度量标准。默认值:无
healthCheckRegistry
此属性仅可通过编程配置或IoC容器获得。此属性允许您指定池使用的Codahale / Dropwizard 实例HealthCheckRegistry来报告当前的健康信息。默认值:无
poolName
此属性表示连接池的用户定义名称,主要显示在日志记录和JMX管理控制台中,以标识池和池配置。 默认值:自动生成
3.springboot2集成hikariCp
springboot 只要你集成了`spring-boot-starter-jdbc`就已经引入了hikariCp。 `spring-data-jpa` 和`mybatis-spring-boot-starter` 都集成了`spring-boot-starter-jdbc` 。
上面是hikariCp达成自动配置的条件。我们解读一下:
- 如果类路径存在HikariDataSource。事实上就是引入hikariCp的依赖。
- 没有声明DataSource Bean 存在
- 如果你满足以上2个条件。你在配置文件中声明了spring.datasource.type属性为 com.zaxxer.hikari.HikariDataSource 或者你没有声明spring.datasource.type属性,当然你不能声明其它的类型 。
这样hikariCp就自动配置了,只需要你像其他数据源一样定制好自己的参数就可以用了。
下面是一个常用的配置:
4.总结
今天我们学会了springboot2中如何使用性能最好的jdbc数据库连接池hikariCp。对其常用配置进行了讲解。以及分析了springboot2是如何自动对其进行集成的。相信对一些不是很清楚该连接池的java开发者是一个很好的指南。