- 首先,需要添加测试所需的jar包。本次测试的jar包版本为,C3P0:0.9.52,duird:1.0.13,Tomcat jdbc:8.5.20
- 本次测试使用的数据库为mysql,部署在服务器上。
- 编写测试代码。只进行了数据库连接的获取,与释放。
- 上测试数据,代码放最后
- 首先是在单线程的情况下,取出,进行sql查询,放回100次,,循环10次求平均值。
单线程,并且有查询的情况下,druid性能最好。 - 然后是在多线程的情况下,使用Fiber进行的多线程测试。无SQL查询。第一列,连接池名称;第二列,计算的每个线程的获取加释放时间的总时间;第三列,程序运行的总时间。
6.1 开10个线程,每个线程10000次。
结果1
结果2
6.2 开100个线程,每个线程10000次。
结果1
结果2
线程少,无SQL查询的情况下,Tomcat jdbc最好,druid中等,C3P0最慢 - 多线程测试2,有查询语句,开100个线程,每个线程查询2000次。
结果1
结果2 - 多线程测试3,有查询语句,开200个线程,每个线程2000次。
结果1
结果2 - 多线程测试4,有查询语句,开200个线程,每个线程查询200次。
结果1
结果2
结果3 - 进行连接池阻塞测试。
设置连接池的最大连接数为20.
设置程序开40个线程,查询1000次
设置程序开100个线程,查询1000次。
结论
1.在单线程,进行正常查询的情况下,druid的性能是最好的,Tomcat jdbc其次。
2.在多线程,只获取连接不进行查询的情况下,Tomcat jdbc最好,C3P0其次。
3.在多线程,进行正常查询的情况下,Tomcat jdbc略占优势,因为mysql是部署在服务器上的,进行查询时可能会受到网络波动的影响,所以进行了很多次实验,Tomcat用时少的时候占多数情况。
代码,,是从http://www.cnblogs.com/barrywxx/p/6343303.html这个地方抄的,,然后小改了一下。
package jdbcPoolTest;
import java.beans.PropertyVetoException;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.St