美文网首页转载
连接池< Connection Pool>

连接池< Connection Pool>

作者: Mr邓 | 来源:发表于2016-06-04 16:55 被阅读2383次

一、连接池作用

二、连接池对比

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>

相关文章

网友评论

    本文标题:连接池< Connection Pool>

    本文链接:https://www.haomeiwen.com/subject/bjbldttx.html