开胃菜:
据说hikari连接池很快,快到让另一个连接池的作者抛弃对自己连接池的维护,并且强烈推荐使用hikari连接池目前我们项目使用的有两个 一个是Druid , 一个是 Hikari, 其中Druid关注的是连接池中连接的监控作用,而Hikari注重的是连接池中连接的创建和回收的速度,因此Hikari会有更高的效率。
Druid 连接配置
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
初始化连接大小
<property name="initialSize" value="${initialSize}"></property>
连接池最大数量
<property name="maxActive" value="${maxActive}"></property>
连接池最小空闲
<property name="minIdle" value="${minIdle}"></property>
获取连接最大等待时间
<property name="maxWait" value="${maxWait}"></property>
<property name="filters" value="stat,config" />
<property name="connectionProperties" value="config.decrypt=true" />
</bean>
hikari连接配置:
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"
destroy-method="close">
<!-- 无需指定,除非系统无法自动识别 -->
<property name="jdbcUrl" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<!-- 连接只读数据库时配置为true, 保证安全 -->
<property name="readOnly" value="false" />
<!-- 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒 -->
<property name="connectionTimeout" value="30000" />
<!-- 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟 -->
<property name="idleTimeout" value="60000" />
<!-- 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,参考MySQL wait_timeout参数(show variables like '%timeout%';) -->
<property name="maxLifetime" value="1800000" />
<!-- idleTimeout只有在minimumIdle设置为小于maximumPoolSize的情况下才生效 -->
<property name="minimumIdle" value="10" />
<!-- 连接池中允许的最大连接数。缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count) -->
<property name="maximumPoolSize" value="15" />
</bean>
还有一个就是Hikari在spring-boot中的配置
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://xx.xx.xx.xx:3306/xx?characterEncoding=UTF-8&useUnicode=true&autoReconnect=true&useCursorFetch=true&defaultFetchSize=100&serverTimezone=UTC
username: root
password: root
hikari:
minimum-idle: 5
idle-timeout: 600000
auto-commit: true
pool-name: Hikari Pool
max-lifetime: 1800000
connection-timeout: 30000
connection-test-query: Select 1
jhipster生成的默认链接:
datasource:
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:mysql://220.180.238.62:13306/yaojiang?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
username: root
password: XXXXXX
hikari:
poolName: Hikari
auto-commit: false
data-source-properties:
cachePrepStmts: true
prepStmtCacheSize: 250
prepStmtCacheSqlLimit: 2048
useServerPrepStmts: true