号称性能最好的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();
	}

}

另外,HikariCP需要依赖下面几个jar

slf4j-api-1.7.12.jar

metrics-core-3.0.2.jar

metrics-healthchecks-3.1.2.jar

javassist-3.19.0-GA.jar

HikariCP-2.3.5.jar

若使用MySQL则还需要mysql-connector-java-5.0.8-bin.jar

以上使用HikariCP需要的jar可以到http://download.csdn.net/detail/abc_key/8790543这个地址下载

时间: 06-08

号称性能最好的JDBC连接池:HikariCP的相关文章

MySql & JDBC & 连接池 & 总结

连接池:解决资源浪费,提高代码性能. 本小节目标: 使用DBCP,C3P0连接池完成基本数据库的操作. 使用DBUtils完成CRUD的操作. 数据库连接池的解决方案是: 当应用程序启动时,系统主动建立足够的数据库连接,并将这些连接组成一个连接池.每次应用程序请求数据库连接时,无须重新打开连接,而是从连接池中取出已有的连接使用,使用完后不再关闭数据库连接,而是直接将连接归还给连接池.通过使用连接池,将大大提高程序的运行效率. 数据库连接池是Connection 对象的工程.数据库连接池的常用参数

JDBC连接池(数据源)

自定义连接池:用装饰设计模式将原连接的close方法改造成将连接还回数据源:装饰设计模式:http://www.cnblogs.com/tongxuping/p/6832518.html: 开源数据库连接池: C3P0连接池: 基本步骤: 1.导入开发包           2.创建数据库连接池         ComboPooledDataSource cpds = new ComboPooledDataSource();           3.配置基本的连接信息              

JDBC 连接池

数据库连接池(connection pool) JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet.beans)中建立数据库连接. 进行sql操作 断开数据库连接. 这种模式开发,存在的问题: 数据库的连接资源并没有得到很好的重复利用. 对于每一次数据库连接,使用完后都得断开. 这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃. 数据库连接池 数据库连接池的基本思

JDBC连接池与工具类

1.连接池概述 用池来管理Connection,这样可以重复使用Connection,有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象,当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection,而是把Connection归还给池,池就可以再利用这个Connection对象了 2.C3P0 public class Demo1 { @Test public void test() throws Ex

JDBC/连接池连接数据库

import java.io.FileInputStream; import java.sql.Connection; import java.sql.DriverManager; import java.util.Properties; import org.apache.commons.dbcp.BasicDataSource; /** * 该类负责管理数据库的连接 * 当业务逻辑需要使用数据库连接时,只需要通过当前类 * 的静态方法获取连接即可. * 这样的好处在于,连接数据的工作由当前类

JDBC连接池

主要内容: 介绍数据库连接池 需要的接口和方法 实现步骤 一.数据库连接池: 1. 预先向数据库申请多个可用的数据库连接,保存到集合对象中,应用程序每次从集合对象中取出可用的数据库连接,执行数据库操作:操作完成后将连接放回集合对象.实现了数据库连接的复用. 2.数据库连接的建立是整个数据库操作中最耗时的操作,我们只做一次数据库操作就开关一次数据库连接,这样是很影响效率的     3.我们是不是可以这样,每次从某一个缓存的地方获取一个数据库连接,使用完之后再归还到那个缓存的地方,不真正意义上的关闭

再淡spring jdbc 连接池断开重连设置

先看一段错误日志: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed. ### The error may exist in file ----] ### The error may involve ..... ### The error occ

jdbc连接池中c3p0的配置文件的详解以及在在java中如何使用

<c3p0-config> <!-- 默认配置,如果没有指定则使用这个配置 --> <default-config> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl"> <![CDATA[jdbc:mysql://127.0.0.1:3306/hncu?useUnic

JDBC连接池之C3P0

1.导入jar包 c3p0-0.9.1.jar mchange-commons-java-0.2.3.4(注:该jar包是c3p0数据库连接池的辅助包,没有这个包系统启动的时候会报classnotfoundexception,这是c3p0-0.9.2版本后分离出来的包,0.9.1的时候还是一个包就搞定的) 2.获取连接 C3P0有三种方式 实现. 1.自己动手写代码,实现数据源 例如:在类路径下配置一个属性文件,config.properties,内容如下: driverClass=xxx jd