那些好用的连接池们
HikariCP
HikariCP为什么快
- 字节码级别优化(很多方法通过JavaAssist生成)
- 大量小改进
1.通FastStatementList代替ArrayList
2. 无锁集合ConcurrentBag
3. 代理类的优化(比如,用invokestatic代替了invokevirtual)
在Spring Boot中的配置
Spring Boot 2.x
- 默认使用HikariCP
- 配置spring.datasource.hikari.*配置
Spring Boot 1.x
- 默认使用Tomcat连接池,需要移除tomcat-jdbc 依赖
- spring.datasource,type=com.zaxxer.hikari.HikariDataSource
Alibaba Druid
Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Logging呢个诊断Hack应用行为 ----Alibaba Druid官方介绍
Druid
经过阿里巴巴各大系统的考验,值的信赖
实用功能
- 详细的监控(真的是全面)
- ExceptionSorter,针对主流数据库的返回码都有支持
- SQL防注入
- 内置加密配置
- 众多扩展点,方便进行定制
数据源配置
通过 druid-spring-boot-starter
- spring.datasource,druid.*
- Filter配置
- spring.datasource.druid.filters=stat,config,wall,log4j(全部使用默认值)
- 密码加密
- spring.datasource.password=<加密密码>
- spring.datasource.druid.fliter.config.enabled=true
- spring.datasource.druid.connection-propertiles=config.decrypt.key=
- SQL防注入
- spring.datasource.druid.fliter.wall.enabled=true
- spring.datasource.druid.fliter.wall.db-type=h2
- spring.datasource.druid.fliter.wall.config.delete-allow=false
- spring.datasource.druid.fliter.config.drop-table-allow=false
Druid Filter
- 用于定制连接池操作的各个环节
- 可以继承FilterEventAdapter以便方便实现Filter
- 修改META-INF/druid-filter.properties增加Filter配置
连接池选择时的考量点
docker