目前常用的数据库连接池有四种:C3P0、DruidCP、HikariCP、Tomcat Jdbc Pool。
网上都是说HikariCP很好,Druid也很好,两个侧重点不一样。
今天我在我的笔记本上,就这四个连接池的性能做了一个小的测试,结果仅供参考。
分了两个场景进行了测试:
场景一:每个线程查询10次,分别有10、100、500、1000、5000个线程
场景二:100个线程并发,每个线程循环查询的次数不同,分为:10、100、500、1000次
测试完成之后,再进行对两个场景分别进行横向比对,和四个连接池的纵向比较。
场景一的结果:
结论:随着并发访问线程数量的增加,HikariCP所用的是时间的增量最小,其次是Druid,然后是C3P0和Tomcat Jdbc Pool。
场景二的结果:
结论:在查询次数少(10次)的情况下,四种连接池的查询时间不分伯仲。但是随着每个线程查询次数的增加,到1000次的时候,Hikari所需要的时间增幅相对最小,其次是Druid,然是Tomcat,最后是C3P0。
接下来,我们再进行纵向比较。
随着线程数增多,变化趋势:
线程数都为100,并发查询,随着查询数增加,变化趋势如下:
结论:虽然Hikari的波动比较大,但是时间增加的幅度都不如其他三个连接池。
我来贴一下官网上数据(我也进行了测试,结果相仿,就直接用官网上的图了)的介绍:
关于Hikari和Druid谁更胜一筹,我认为要根据实际场景去衡量,适合自己的才是最好的。