`
Jason__Chen
  • 浏览: 14871 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

DBCP,C3P0,Proxool,BoneCP性能比较

    博客分类:
  • JAVA
阅读更多
1 c3p0、dbcp、proxool、BoneCP比较
1.1 测试环境:
操作系统:windows xp sp3
数据库:mysql 5.1
1.2 测试条件:
initialSize=30;
maxSize=200;
minSize=30;
其余参数为默认值;
1.3 测试代码:
利用JAVA代码模拟多线程对这三种数据库连接池进行测试,通过花费的时间判断效率
DBTest.java:
public class DBTest implements Runnable /*extends Thread*/ {
public long date1=0;
private static Proxool proxool;
public static int count = 0;
public static void main(String[] args) throws Exception {
//DBCP.init();
//C3P0.init();
//proxool = Proxool.getInstance();
BoneCPConn.init();
DBTest test = new DBTest();
test.startup();
}

public void startup() {
for (int i = 0; i <5; i++) {
Thread thread = new Thread(this);
thread.start();
}
}

public void run() {
if(date1==0)
{
date1 = System.currentTimeMillis();
System.out.println(date1);
}
for(int i=0 ; i<10 ; i++){
try {
//Connection conn = DBCP.getConnection();
// Connection conn = C3P0.getConnection();
//Connection conn =proxool.getConnection();
Connection conn = BoneCPConn.getConnection();
if (conn != null) {
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery("select * from user where id=1");
while (rs.next()) {
String username = rs.getString(2);
System.out.println(username);
}
rs.close();
statement.close();
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
count++;
if(count==5)
{
long date2 = System.currentTimeMillis();
System.out.println(date2);
System.out.println("运行完毕!耗时为:" + (date2 - date1) + "ms");
}
}
}
4.3.1 模拟5个线程循环10次并发访问数据库
DBCP用时1181ms
C3P0用时860ms
Proxool用时1563ms
BoneCP用时31ms
4.3.2 模拟10个线程循环10次并发访问数据库
DBCP用时1188ms
C3P0用时953ms
Proxool用时1625ms
BoneCP用时63ms
4.3.3 模拟20个线程循环10次并发访问数据库
DBCP用时1204ms
C3P0用时1000ms
Proxool用时1640ms
BoneCP用时110ms
4.3.4 模拟30个线程循环10次并发访问数据库
DBCP用时1250ms
C3P0用时1047ms
Proxool用时1657ms
BoneCP用时156ms
4.3.5 模拟50个线程循环10次并发访问数据库
DBCP用时1406ms
C3P0用时1343ms
Proxool用时1843ms
BoneCP用时172ms
4.3.6 模拟100个线程循环10次并发访问数据库
DBCP用时1641ms
C3P0用时2703ms
Proxool用时2031ms
BoneCP用时532ms
4.3.7 模拟200个线程循环10次并发访问数据库
DBCP用时2093ms
C3P0用时4891ms
Proxool用时2406ms
BoneCP用时936ms
4.3.8 模拟500个线程循环10次并发访问数据库
DBCP用时3219ms
C3P0用时11703ms
Proxool用时3343ms
BoneCP用时1922ms
4.3.9 模拟800个线程循环10次并发访问数据库
DBCP用时4688ms
C3P0用时12063ms
Proxool用时4141ms
BoneCP用时2859ms
4.3.10 模拟1000个线程循环10次并发访问数据库
DBCP用时5187ms
C3P0用时12563ms
Proxool用时4703ms
BoneCP用时3610ms
4.3.11 模拟3000个线程循环10次并发访问数据库
DBCP用时14094ms
C3P0用时16297ms
Proxool用时11344ms
BoneCP用时11391ms
4.3.12 模拟5000个线程循环10次并发访问数据库
DBCP用时23610ms
C3P0用时22032ms
Proxool用时20125ms
BoneCP用时17125ms

4.4测试结果分析:
         BoneCP一直保持性能最佳
4.5 测试结论
          通过对四种数据库连接池的性能测试发现,BoneCP的性能明显优于其它三种.
分享到:
评论
10 楼 Jason__Chen 2010-10-22  
kenshinlk 写道
请教一下楼主,对于Bonecp:
1.有没有类似proxool的监测后台,即用org.logicalcobwebs.proxool.admin.servlet.AdminServlet配置的监测后台

2.自动重连机制如何,即应用服务器和数据库服务器曾经短暂性断开过,proxool能够比较好的自动重连,bonecp应该如何配置呢(曾经尝试过,但貌似会抛错)?

别说请教啊,不敢当啊,大家交流交流
1,BoneCP没有监测后台,这4种连接池也就proxool有吧
2,还没去研究过这方面列,proxool是通过<property name="autoReconnect" value="true" />
去重连的?
9 楼 dbcman 2010-10-22  
java.util.concurrent包和分区的机制,技术演进的结果。
8 楼 freish 2010-10-22  
其他数据库是不是也要试试?
7 楼 macrotea 2010-10-22  
向楼主的探究精神致敬!
6 楼 rocketball 2010-10-22  
没用过BoneCP,但是很质疑这个数据,居然只有1/10
5 楼 numen_wlm 2010-10-22  
BoneCP我也在用
4 楼 hypercube1024 2010-10-22  
boneCP确实不错,现在我也在用
3 楼 kenshinlk 2010-10-22  
请教一下楼主,对于Bonecp:
1.有没有类似proxool的监测后台,即用org.logicalcobwebs.proxool.admin.servlet.AdminServlet配置的监测后台

2.自动重连机制如何,即应用服务器和数据库服务器曾经短暂性断开过,proxool能够比较好的自动重连,bonecp应该如何配置呢(曾经尝试过,但貌似会抛错)?
2 楼 Jason__Chen 2010-10-22  
Songjun37 写道
那为什么 hibernate 官方推荐使用 c3p0 呢? 我也是在一个博客上看到的说是 官方推荐使用的

是的,而且c3p0也被spring推荐,proxool也被hibernate in action推荐,可能是他们对于那些框架兼容性更好吧,但就目前再不添加任何框架的前提下,boneCP是最快的,至于BoneCP为什么会那么多,也是有依据的,他采用了JAVA最新的concurrentHashMap机制,而且连接池可以被动态设置划分为几个区域,每个区域可以独立运行
1 楼 Songjun37 2010-10-22  
那为什么 hibernate 官方推荐使用 c3p0 呢? 我也是在一个博客上看到的说是 官方推荐使用的

相关推荐

    Spring3中配置DBCP,C3P0,Proxool,Bonecp数据源

    在Spring3中配置数据源,包括DBCP,C3P0,Proxool,Bonecp主要的数据源,里面包含这些数据源的jar文件和依赖文件及配置文件。。 如Bonecp目前听说是最快的数据源,速度是传统的c3p0的25倍, bonecp.properties文件: ...

    JAVA数据库连接池(C3P0,Druid,JNDI ,DBCP,Proxool,BoneCP)

    本文将详细介绍几个常见的Java数据库连接池实现:C3P0、Druid、JNDI、DBCP、Proxool以及BoneCP,并结合Spring+MyBatis+maven环境下的应用示例进行解析。 1. C3P0: C3P0是一个开源的JDBC连接池,它实现了数据源和...

    数据连接池用法(C3PO,proxool,dbcp,bonecp)

    本文将详细介绍四个常见的Java数据连接池组件——C3PO、Proxool、DBCP和BoneCP的配置与用法。 首先,我们来看C3PO(Comprehensive3rdPartyPooling),这是一个基于Apache Commons DBCP的数据库连接池实现,具有更好...

    druid-1.0.19

    Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。 Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模...

    druid-0.2.20

    Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。 Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模...

    druid-1.0.25

    Druid是阿里巴巴的开源产品,目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。

    druid各版本jar包

    Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。

    druid-1.1.12.jar

    Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。

    Java连接池评估报告

    1. **性能考量**:在需要高性能和稳定性的应用中,推荐使用C3P0或BoneCP。 2. **易用性**:对于那些寻求易于集成和配置的解决方案,DBCP和Tomcat JDBC Pool可能是更好的选择。 3. **资源管理**:为了减少资源浪费并...

    druid-1.0.11.jar

    Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。 Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模...

    Druid数据库连接池Jar包

    Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署...

    关于JAVA的数据库连接池的探讨.pdf

    对于提供连接池的数据源来说,除了Apache的DBCP以外,还有C3P0、Proxool、BoneCP等。具体如表1所示。 表1 基于JAVA的带连接池的数据源组件 序号 数据源名称 依赖的JAR包 实现的功能 1 Apache DBCP dbcp.jar、pool....

    几种常用的Java数据源解决方案

    本文将详细介绍几种常用的数据源解决方案及其配置方法,包括JNDI方式创建`DataSource`、Apache提供的简单连接池创建数据源、C3P0方式创建数据源、Proxool方式创建数据源以及BoneCP方式创建数据源。 #### JNDI 方式...

    数据库连接池以及hibernate对各种连接池的整合

    10. **BoneCP**:快速且开源的连接池,比C3P0和DBCP快25倍,适合性能敏感的应用。 在配置Hibernate与连接池的整合时,需要注意以下几点: 1. **Apache DBCP**:在Hibernate 2中支持,但在Hibernate 3中不推荐,...

    几种数据库连接池详细配置

    本文将深入解析几种常用的数据库连接池——Apache DBCP、C3P0、Proxool、BoneCP的详细配置参数,帮助开发者更好地理解和应用这些技术。 ### Apache DBCP **dataSource**: 配置数据源,通常在应用服务器的配置文件...

    软件性能优化最佳实践

    不同的连接池(如c3p0、dbcp、Proxool等)在性能和稳定性方面有所不同。例如,BoneCP在性能方面表现出色,而DBCP则更稳定。 - **批量数据处理:** 针对大批量数据处理任务,建议直接使用JDBC,以获得更好的性能。 *...

    Java-ConnectionPools.rar_连接池

    2. **c3p0**:这是一个开源的JDBC连接池,由Maurice Priester创建。c3p0提供了连接测试、空闲连接检查等功能,同时支持JNDI集成。它允许开发者配置各种参数,如最小和最大连接数、初始连接数量、超时时间等。 3. **...

    基于SSM架构实现的大型分布式购物网站-B2C项目源码+项目说明.zip

    Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。 Druid已经在阿里巴巴部署了超过600个应用,经过多年多生产环境大规模...

Global site tag (gtag.js) - Google Analytics