DBCP,C3P0,Proxool,BoneCP性能比较

本文通过模拟不同数量的线程并发访问数据库,测试并比较了1c3p0、dbcp、proxool及BoneCP四种数据库连接池的性能。结果显示,在所有测试场景中,BoneCP的性能表现最佳。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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个

红包金额最低5元

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

抵扣说明:

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

余额充值