美文网首页转载
连接池< 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