一、连接池作用
二、连接池对比
proxool
更新时间截止2008年。速度可以,稳定性稍差,发较高的情况下会出错。
c3p0
太古老,代码及其复杂,不利于维护。貌似都比它强。
dbcp
是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。
druid
功能比较全面,且扩展性较好,比较方便对jdbc接口进行监控跟踪等。
BoneCP
13年前最快的连接池项目。2013年后不再更新,心灰意冷。
HikariCP
光连接池
三、连接池配置
使用方法:
you can use the HikariConfig
class like so:
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/simpsons");
config.setUsername("bart");
config.setPassword("51mp50n");
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
HikariDataSource ds = new HikariDataSource(config);
or directly instantiate a HikariDataSource
like so:
HikariDataSource ds = new HikariDataSource();
ds.setJdbcUrl("jdbc:mysql://localhost:3306/simpsons");
ds.setUsername("bart");
ds.setPassword("51mp50n");
...
or property file based:
HikariConfig config = new HikariConfig("some/path/hikari.properties");
HikariDataSource ds = new HikariDataSource(config);
Example property file:
dataSourceClassName=org.postgresql.ds.PGSimpleDataSource
dataSource.user=test
dataSource.password=test
dataSource.databaseName=mydb
dataSource.portNumber=5432
dataSource.serverName=localhost
四、HikariCP优点
- 字节码精简:优化代码,直到编译后的字节码最少,这样,CPU缓存可以加载更多的程序代码;
- 优化代理和拦截器:减少代码,例如HikariCP的Statement proxy只有100行代码,只有BoneCP的十分之一;
- 自定义数组类型(FastStatementList)代替ArrayList:避免每次get()调用都要进行range check,避免调用remove()时的从头到尾的扫描;
- 自定义集合类型(ConcurrentBag):提高并发读写的效率;
- 其他针对BoneCP缺陷的优化,比如对于耗时超过一个CPU时间片的方法调用的研究(但没说具体怎么优化)。
个连接池的代码量对比(代码量越少,一般意味着执行效率越高、发生bug的可能性越低)
另外:对于web项目,记得要配置:destroy-method="shutdown"
五、下载地址及依赖环境
5.1 下载地址
http://mvnrepository.com/artifact/com.zaxxer/HikariCP
5.2 Git主页
https://github.com/brettwooldridge/HikariCP
5.3 依赖包
log4j-1.2.16.jar
slf4j-api-1.5.10.jar
slf4j-log4j12-1.5.10.jar
5.4 版本支持
Java 7 and Java 8 maven artifact:
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.4.5</version>
</dependency>
Java 6 maven artifact (maintenance mode):
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP-java6</artifactId>
<version>2.3.13</version>
</dependency>
网友评论