1. 本地性能测试耗时(一)
共同条件:测试程序与数据库在同一台主机上,各DataSource均采用默认配置,每个线程循环1000次,查询语句为select * from table
场景一:10行数据,10个线程
场景二:10行数据,100个线程
场景三:1000行数据,10个线程
场景四:1000行数据,100个线程
场景五:100000行数据,10个线程
结论:
tomcat-jdbc-pool ≈ druid > dbcp2 > BoneCP > c3p0
备注:
负载(数据量、线程数等)过大时,本机CPU将成为瓶颈,会极大影响查询耗时
2. 本地性能测试耗时(二)
默认设置下,各DataSource的连接池大小如下:
tomcat-jdbc-pool:(initialSize, minIdle, maxIdle, maxActive) = (10, 10, 100, 100)
dbcp2: (initialSize, minIdle, maxIdle, maxTotal) = (0, 0, 8, 8)
c3p0: (initialPoolSize, minPoolSize, maxPoolSize) = (3, 3, 15)
druid: (initialSize, minIdle, maxIdle, maxActive) = (0, 0, 8, 8)
BoneCP:不支持设置连接池大小
将各DataSource连接池大小统一设置成最小值为4,最大值为16后,再重新进行一轮性能测试,结果如下:
druid > tomcat-jdbc-pool > dbcp2 > c3p0
结论:在连接池远大于druid的情况下,tomcat-jdbc-pool的性能与之相当;而在同等连接池的情况下,则不如druid,故综合来看druid优于tomcat-jdbc-pool
3. 最新版本(截至2015-8-19)
tomcat-jdbc-pool:
org.apache.tomcat:tomcat-jdbc:8.0.24
更新于2015-7-1
druid:
com.alibaba:druid:1.0.15
更新于2015-6-30
org.apache.commons:commons-dbcp2:2.1.1
更新于2015-8-2
com.jolbox:bonecp:0.8.0.RELEASE
更新于2013-10-23
c3p0:
com.mchange:c3p0:0.9.5.1
更新于2015-6-16