Spring Boot(八):Spring Boot整合Mybatis Hikari连接池
在Spring Boot(七):Spring Boot整合Mybatis 连接池中,我们在对Mybatis基础上添加了Druid连接池的优化。Spring Boot 2.0开始就内置了默认的连接池Hikari,所以不需要添加依赖即可在Spring Boot项目中使用。
Hikari因是Spring Boot子项目,所以社区比较活跃,因其自身也有以下几点优势,所以项目中也常常采用。
- 字节码精简 :优化代码,直到编译后的字节码最少,这样,CPU缓存可以加载更多的程序代码;
- 优化代理和拦截器 :减少代码,例如 HikariCP 的 Statement proxy只有 100 行代码,只有 BoneCP 的十分之一;
- 自定义数组类型(FastStatementList)代替ArrayList :避免每次get() 调用都要进行 range check,避免调用 remove() 时的从头到尾的扫描;
- 自定义集合类型 ConcurrentBag :提高并发读写的效率;
- 其他针对 BoneCP 缺陷的优化。
Hikari因是Spring Boot内置连接池,使用更加简单,只需要在Spring Boot(六):Spring Boot整合Mybatis源码基础上,增加Hikari连接池的配置文件即可。
1.Hikari配置
yaml
#数据库配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/springboot_test
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
##Hikari连接池的设置
#最小连接
hikari.minimum-idle: 5
#最大连接
hikari.maximum-pool-size: 15
#自动提交
hikari.auto-commit: true
#最大空闲时常
hikari.idle-timeout: 30000
#连接池名
hikari.pool-name: DatebookHikariCP
#最大生命周期
hikari.max-lifetime: 900000
#连接超时时间
hikari.connection-timeout: 15000
#心跳检测
hikari.connection-test-query: SELECT 1
2.Junit测试
运行如下Junit代码
java
@Test
public void testCURD() {
testInsertUser();
testUpdateUser();
testFindAll();
testDelete();
}
console效果,已经可以看到使用的是Hikari连接池了
3.druid与hikari优缺点
前面一篇已经介绍了druid,那肯定要比较下本文使用的hikari和druid的优缺点
在性能方面:HikariCP因为细节方面优化力度较大,性能方面强于Druid
hikariCP
- hikariCP 的性能十分优异,号称java平台最快的数据库连接池。
- hikariCP在并发较高的情况下,性能基本上没有下降。
- 从字节码的维度优化代码。让方法尽量在35个字节码以下,来提升jvm的处理效率。 (default inline threshold for a JVM running the server Hotspot compiler is 35 bytecodes )
- HiKariCP性能比Druid高
- HiKariCP是Spring Boot 2+官方支持并默认内置,就像jackson一样,和Spring Boot兼容性更好 Druid
Druid的优势是监控完善,扩展性更好
- 功能丰富程度方面:Druid功能更全面除了具有连接池的基本功能以外,还支持sql级监控,支持扩展,防止SQL注入等功能。
- 可视化监控,统计数据较为全面。
使用热度:Druid在国内使用较多,国内有很多生产实践。HikariCP是spring boot 2.0以后默认连接池,在国外使用较多