3.Java常用连接池
3.0.常用连接池
在Java中开源的数据库连接池有以下几种 :
1.C3P0:是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。
2.Proxool:是一个Java SQL Driver驱动程序,提供了对选择的其它类型的驱动程序的连接池封装。可以非常简单的移植到现存的代码中,完全可配置,快速、成熟、健壮。可以透明地为现存的JDBC驱动程序增加连接池功能。
3.Jakarta DBCP:DBCP是一个依赖Jakartacommons-pool对象池机制的数据库连接池。DBCP可以直接的在应用程序中使用。
3.1.Hikari
Hikari是一款非常强大,高效,并且号称“史上最快连接池”。
由于其性能方面比较好,并且在springboot2.0之后,采用的默认数据库连接池就是Hikari,在引用parents后不用专门再添加依赖。 也可以导入依赖
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>5.0.0</version>
</dependency>
性能方面的比较:hikariCP>druid>tomcat-jdbc>dbcp>c3p0 。hikariCP的高性能得益于最大限度的避免锁竞争。
3.1.1.配置
在Spring Boot自动化配置中,对于数据源的配置可以分为两类:
1、通用配置:以 spring.datasource.* 的形式存在,主要是对一些即使使用不同数据源也都需要配置的一些常规内容。
比如:数据库链接地址、用户名、密码等。通常就这些配置:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/数据库名?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
2、数据源连接池配置:以 spring.datasource.<数据源名称>.* 的形式存在。
详细配置请访问:https://github.com/brettwooldridge/HikariCP
比如:Hikari的配置参数就是 spring.datasource.hikari.* 形式。下面这个是我们最常用的几个配置项及对应说明:
# 最小空闲连接,默认值10,小于0或大于maximum-pool-size,都会重置为maximum-pool-size
spring.datasource.hikari.minimum-idle=10
# 最大连接数,小于等于0会被重置为默认值10;大于零小于1会被重置为minimum-idle的值
spring.datasource.hikari.maximum-pool-size=20
# 空闲连接超时时间,默认值600000(10分钟),大于等于max-lifetime且max-lifetime>0,会被重置为0;
# 不等于0且小于10秒,会被重置为10秒。
spring.datasource.hikari.idle-timeout=500000
# 连接最大存活时间,不等于0且小于30秒,会被重置为默认值30分钟.设置应该比mysql设置的超时时间短
spring.datasource.hikari.max-lifetime=540000
# 连接超时时间:毫秒,小于250毫秒,否则被重置为默认值30秒
spring.datasource.hikari.connection-timeout=60000
# 用于测试连接是否可用的查询语句
spring.datasource.hikari.connection-test-query=SELECT 1
## 此属性控制从池返回的连接的默认自动提交行为,默认值:true
spring.datasource.hikari.auto-commit=true
## 连接池名称
spring.datasource.hikari.pool-name=MyHikariCP
3.1.2.yml格式配置
spring:
application:
name: hikari-demo
datasource:
url: jdbc:mysql://127.0.0.1:3306/atest_stuexam
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.zaxxer.hikari.HikariDataSource
hikari:
maximum-pool-size: 1000
minimum-idle: 200
connection-timeout: 60000
idle-timeout: 600000
max-lifetime: 3000000
connection-test-query: select 1
|