版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接
常用连接池:c3p0,dbcp等,据说是史上最快速的连接池。springboot2.0也是默认集成此连接池.
github性能对比截图:
application.yml配置 springboot版本2.0.5
#数据库配置
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
username: xxxx
password: xxxx
url: jdbc:mysql://xxxx:3306/jeecms_pro?characterEncoding=UTF-8&autoReconnect=true
type: com.zaxxer.hikari.HikariDataSource
hikari:
read-only: false #默认是false
connection-timeout: 5000 #等待连接池分配连接的最大时长(毫秒)
idle-timeout: 7200 #一个连接idle状态的最大时长(毫秒)
max-lifetime: 7200 #一个连接的生命时长(毫秒)
maximum-pool-size: 100 #连接池内最大连接数
minimum-idle: 10
auto-commit: true
如果是spring项目,application-context.xml配置:
<bean id="dataSourceHikari" class="com.zaxxer.hikari.HikariDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- 连接只读数据库时配置为true, 保证安全 -->
<property name="readOnly" value="false" />
<!-- 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒 -->
<property name="connectionTimeout" value="${cpool.checkoutTimeout}" />
<!-- 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟 -->
<property name="idleTimeout" value="${cpool.maxIdleTime}" />
<!-- 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,参考MySQL
wait_timeout参数(show variables like '%timeout%';) -->
<property name="maxLifetime" value="${cpool.maxIdleTime}" />
<!-- 连接池中允许的最大连接数。缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count) -->
<property name="maximumPoolSize" value="${cpool.maxPoolSize}" />
<property name="minimumIdle" value="${cpool.minPoolSize}" />
</bean>