号称性能最好的JDBC连接池:HikariCP

HikariCP号称是现在性能最好的JDBC连接池组件,具体的性能到底如何,我也没有仔细的测试过,不过从它现在的发展来看,其可能确实如它宣传的那样其性能高过目前所有的连接池组件。之前对连接池的记忆一直都是C3P0、DBCP、BoneCP,这三者中BoneCP的性能是最好的,C3P0的性能在现在来说确实是非常差的了,好像C3P0很久都没有更新了,所以我们应该杜绝在项目中使用C3P0,至于是否要使用HikariCP,我觉得可以尝试。HikariCP毕竟是才出来不久,其性能到底如何,也需要实践的检验,若是担心新东西有坑,我推荐使用BoneCP。Spring现在也集成了HikariCP,所以我觉得很有尝试它的必要。前不久我在项目中使用了HikariCP,也没出现什么问题,运行比较稳定。

HikariCP在github上的地址:https://github.com/brettwooldridge/HikariCP

下面是2张HikariCP和其他连接池组件的性能比较图片:

这里写图片描述

在其网站上可以看到详细的使用文档,下面是常规的使用方法:

import java.sql.Connection;
import java.sql.SQLException;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

/**
 * HikariCP使用
 * @author CoolKing
 *
 */
public class DataSource {

    private HikariDataSource ds;

    /**
     * 初始化连接池
     * @param minimum
     * @param Maximum
     */
    public void init(int minimum,int Maximum){
        //连接池配置
        HikariConfig config = new HikariConfig();
        config.setDriverClassName("com.mysql.jdbc.Driver");
        config.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/testdb?user=root&password=123456&useUnicode=true&characterEncoding=utf8");
        config.addDataSourceProperty("cachePrepStmts", true);
        config.addDataSourceProperty("prepStmtCacheSize", 500);
        config.addDataSourceProperty("prepStmtCacheSqlLimit", 2048);
        config.setConnectionTestQuery("SELECT 1");
        config.setAutoCommit(true);
        //池中最小空闲链接数量
        config.setMinimumIdle(minimum);
        //池中最大链接数量
        config.setMaximumPoolSize(Maximum);

        ds = new HikariDataSource(config);

    }

    /**
     * 销毁连接池
     */
    public void shutdown(){
        ds.shutdown();
    }

    /**
     * 从连接池中获取链接
     * @return
     */
    public Connection getConnection(){
        try {
            return ds.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
            ds.resumePool();
            return null;
        }
    }

    public static void main(String[] args) throws SQLException {
        DataSource ds = new DataSource();
        ds.init(10, 50);
        Connection conn = ds.getConnection();
        //......
        //最后关闭链接
        conn.close();
    }

}

import java.sql.Connection;
import java.sql.SQLException;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

/**
* HikariCP使用
* @author CoolKing
*
*/
public class DataSource {

private HikariDataSource ds;  

/** 
 * 初始化连接池 
 * @param minimum 
 * @param Maximum 
 */  
public void init(int minimum,int Maximum){  
    //连接池配置  
    HikariConfig config = new HikariConfig();  
    config.setDriverClassName("com.mysql.jdbc.Driver");  
    config.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/testdb?user=root&password=123456&useUnicode=true&characterEncoding=utf8");  
    config.addDataSourceProperty("cachePrepStmts", true);  
    config.addDataSourceProperty("prepStmtCacheSize", 500);  
    config.addDataSourceProperty("prepStmtCacheSqlLimit", 2048);  
    config.setConnectionTestQuery("SELECT 1");  
    config.setAutoCommit(true);  
    //池中最小空闲链接数量  
    config.setMinimumIdle(minimum);  
    //池中最大链接数量  
    config.setMaximumPoolSize(Maximum);  

    ds = new HikariDataSource(config);  

}  

/** 
 * 销毁连接池 
 */  
public void shutdown(){  
    ds.shutdown();  
}  

/** 
 * 从连接池中获取链接 
 * @return 
 */  
public Connection getConnection(){  
    try {  
        return ds.getConnection();  
    } catch (SQLException e) {  
        e.printStackTrace();  
        ds.resumePool();  
        return null;  
    }  
}  

public static void main(String[] args) throws SQLException {  
    DataSource ds = new DataSource();  
    ds.init(10, 50);  
    Connection conn = ds.getConnection();  
    //......  
    //最后关闭链接  
    conn.close();  
}  

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值