号称性能最好的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这个地址下载

时间: 2024-08-08 22:04:46

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

数据层优化-jdbc连接池简述、druid简介

终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和dao层的优化去写,本篇是一个开始.本文会介绍连接池技术并对比目前比较流行的java连接池技术,之后,会把druid整合到项目中来,将技术方案落地,实际整合到项目中,让技术能为我所用. 使用连接池的原因 jdbc的demo //第一步,注册驱动程序 //com.MySQL.jdbc.Driver Class.fo

JDBC连接池C3P0

连接池 1)传统方式找DriverManager要连接,数目是有限的. 2)传统方式的close(),并没有将Connection重用,只是切断应用程序和数据库的桥梁,即无发送到SQL命令到数据库端执行 3)项目中,对于Connection不说,不会直接使用DriverManager取得,而使用连接池方式. 4)DBCP和C3P0,都是Java开源的,都必须直接或间接实现javax.sql.DataSource接口 5)DBCP连接池需要dbcp.properties文件,同时需加入3个对应的j

JDBC连接池概述

Reference Source:https://www.progress.com/tutorials/jdbc/jdbc-jdbc-connection-pooling 介绍 本文档提供的信息旨在帮助开发人员为必须处理连接池的应用程序提供连接池策略. 首先, 本文档提供 jdbc 3.0 规范指定的 jdbc 连接池概述. 接下来, 它提供了一些示例, 说明如何使用 DataDirect 连接池管理器 (它随 DataDirect Connect?用于jdbc 和 DataDirect Seq

JDBC连接池的简单实现

先说明一下,我本身是做android开发的,java web是我的弱项,只是近来京东云免费,于是去折腾了几下,有了些许经验,特作分享.如果文章中内容有误,还请各高手指正. 我在web端,需要连接数据库进行查询插入等操作,但是每次进行操作都先获取连接用完后就断开的话,未免效率太低.以前知道tomcat中可以配置,但是京东云引擎的tomcat并不能由自己配置.因为我折腾的东西较小,所以也不考虑使用框架,于是就想自己写一个. 我写的连接池很简单,在初始化时创建5个连接,并放在一个列表当中.如果要获取连

使用了Tomcat JDBC连接池不能重连的问题

在项目中用到了tomcat 的jdbc连接池,发现一个问题是,当数据库重启时,服务没有重新的去连接数据库,需要将部署的项目重新启动才能连接到数据库.经过测试对配置做一下修改: 在配置dataSource的地方加入两个配置属性: <property name="testOnBorrow" value="true"/> <!--在连接返回给调用者前用于校验连接是否有效的SQL语句,如果指定了SQL语句,则必须为一个SELECT语句,且至少有一行结果--

Spring boot (11) tomcat jdbc连接池

默认连接池 tomcat jdbc是从tomcat7开始推出的一个连接池,相比老的dbcp连接池要优秀很多,spring boot将tomcat jdbc作为默认的连接池,只要在pom.xml中引入了spring boot的jdbc组件,就会自动引入tomcat jdbc连接池. 默认参数 以下是org.apache.tomcat.jdbc.pool.PoolProperties源码,这是tomcat jdbc连接池的默认初始参数.这个类实现了一个接口PoolConfiguration,查看这个

MySql &amp; JDBC &amp; 连接池 &amp; 总结

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

【转帖】置高并发jdbc连接池

简单的MySQL连接池 [html] view plaincopy <Resource type="javax.sql.DataSource" name="jdbc/TestDB" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://lo

开源JDBC连接池DBCP和C3P0配置(转)

现在Tomcat下使用的是公司框架默认的 Apache DBCP连接池.此种连接池虽出自名门Apache基金会.但口碑不是很好,在新版的Hibernate中已经放弃了对DBCP的支持,取而代之的是 C3P0.开始我还对DBCP抱有希望,加上各种参数设置,但均无效.后来换上了C3P0,使用其testConnectionOnCheckout. testConnectionOnCheckin参数配置后果然一剑封喉的解决了问题.(说明:此种办法其实会带来一定的性能损耗)一.DBCP和C3P0连接池常用配