-
Notifications
You must be signed in to change notification settings - Fork 8.6k
各种连接池性能对比测试
wenshao edited this page Dec 2, 2012
·
26 revisions
测试各种数据库连接池的性能
Connection conn = dataSource.getConnection();
conn.close();
测试执行申请归还连接1,000,000(一百万)次总耗时性能对比。
操作系统 | OS X 10.8.2 |
CPU | intel i7 2GHz 4核 |
JVM | java version "1.6.0_37" |
连接池 | 单线程耗时(毫秒) | 2线程耗时(毫秒) | 5线程耗时(毫秒) | 10线程耗时(毫秒) | 20线程耗时(毫秒) | 50线程耗时(毫秒) |
Druid | 1,102 | 1,509 | 1,889 | 1,904 | 2,027 | 1,977 |
jboss-datasource | 4,912 | 3,049 | 6,868 | 6,512 | 40,146 | 43,748 |
tomcat-jdbc | 1,399 | 1,378 | 2,257 | 2,289 | 2,305 | 2,503 |
DBCP | 3,144 | 3,834 | 6,276 | 6,408 | 6,563 | 6,783 |
BoneCP | 4,327 | 3,598 | 3,800 | 5,242 | 9,402 | 19,066 |
C3P0 | 18,570 | 19,467 | 15,270 | 19,294 | 28,195 | 66,677 |
Proxool | 16,221 | 14,455 | 24,688 | 38,905 | 48,087(抛异常) | 58,238(抛异常) |
操作系统 | OS X 10.8.2 |
CPU | intel i7 2GHz 4核 |
JVM | java version "1.7.0_05" |
连接池 | 单线程耗时(毫秒) | 2线程耗时(毫秒) | 5线程耗时(毫秒) | 10线程耗时(毫秒) | 20线程耗时(毫秒) | 50线程耗时(毫秒) |
Druid | 898 | 1,191 | 1,324 | 1,362 | 1,325 | 1,459 |
jboss-datasource | 4,377 | 2,988 | 3,680 | 3,980 | 32,708 | 37,742 |
tomcat-jdbc | 1,269 | 1,378 | 2,029 | 2,103 | 1,879 | 2,025 |
DBCP | 2,324 | 5,055 | 5,446 | 5,471 | 5,524 | 5,415 |
BoneCP | 3,738 | 3,150 | 3,194 | 5,681 | 11,018 | 23,125 |
C3P0 | 10,841 | 13,637 | 10,682 | 11,055 | 14,497 | 20,351 |
Proxool | 16,337 | 16,187 | 18,310(抛异常) | 25,945 | 33,706(抛异常) | 39,501(抛异常) |
- Druid是性能最好的数据库连接池,tomcat-jdbc和druid性能接近。
- proxool在激烈并发时会抛异常,完全不靠谱。
- c3p0和proxool都相当慢,慢到影响sql执行效率的地步。
- bonecp性能并不优越,采用LinkedTransferQueue并没有能够获得性能提升。
- 除了bonecp,其他的在JDK 7上跑得比JDK 6上快