数据库连性池性能测试(hikariCP,druid,tomcat

2020-04-29  本文已影响0人  zhaozhaoicode

本文主要是对这hikariCP,druid,tomcat-jdbc,dbcp,c3p0几种连接池的详细的功能和性能测试对比。
通过这次测试对目前主流的一些连接池做一个全面的对比,从而给业务系统一个最佳的推荐。
而唯品会venus-data支持三种连接池DBCP、C3P0、DRUID,其中C3P0作为默认的连接池。因此需要针对现状,研发一种分布式数据库连接池。

测试结论

功能对比

各种数据库连接池对比

功能 dbcp druid c3p0 tomcat-jdbc HikariCP
是否支持PSCache
监控 jmx jmx jmx/log/http jmx,log jmx jmx
扩展性
sql拦截及解析 支持
代码 简单 中等 复杂 简单 简单
更新时间 2015.8.6 2015.10.10 2015.12.09 - 2015.12.09
特点 依赖于common-pool 阿里开源,功能全面 历史久远,代码逻辑复杂,且不易维护 - 优化力度大,功能简单,起源于boneCP
连接池管理 LinkedBlockingDeque 数组 - FairBlockingQueue threadlocal+CopyOnWriteArrayList
线程 1个线程(心跳) 2个线程 4个 - 3个

线程的作用

由于boneCP被hikariCP替代,并且已经不再更新,boneCP没有进行调研。
proxool网上有评测说在并发较高的情况下会出错,proxool便没有进行调研。
druid的功能比较全面,且扩展性较好,比较方便对jdbc接口进行监控跟踪等。
c3p0历史悠久,代码及其复杂,不利于维护。并且存在deadlock的潜在风险。

国内公司连接池使用情况

公司 数据库连接池
58同城 自己开发
滴滴 druid dbcp
知果果 druid
慧聪 druid dbcp
起步科技 dbcp 和 druid
亚信 hikariCP
唯品会 dbcp,druid,c3p0(默认)

性能测试

环境配置

CPU Intel(R) Xeon(R) CPU E5-2430 v2 @ 2.50GHz,24core
msyql version 5.5.46
tomcat-jdbc version 8.0.28
HikariCP version 2.4.3
c3p0 Version 0.9.5-pre8
dbcpVersion 2.0.1
druidVersion 1.0.5

获取关闭连接性能测试

测试说明如下:

mock性能数据 (单位:ms)
连接池 5ms 20ms 50ms 100ms
tomcat-jdbc 442 447 1,013 1,264
c3p0 4,480 5,527 7,449 10,725
dbcp 676 689 867 1,292
hikari 38 33 38 30
druid 291 293 562 985
mysql性能数据 (单位:ms)
连接池 5ms 20ms 50ms 100ms
tomcat-jdbc 436 453 1,033 1,291
c3p0 4,378 5,726 7,975 10,948
dbcp 671 679 897 1,380
hikari 96 82 87 78
druid 304 424 690 1,130

测试结果:

性能表现:

hikariCP性能分析:

查询一条语句性能测试

测试说明:

性能指标

测试数据:

连接池 5ms 20ms 50ms 100ms
tomcat-jdbc 2,178 1,495 1,769 1,818 1,858
c3p0 3,237 3,451 4,488 5,994 7,906
dbcp 2,816 1,935 2,097 2,243 2,280
hikari 2,299 1,546 1,682 1,751 1,772
druid 2,297 1,551 1,800 1,977 2,032

测试结果:

pscache性能对比

测试数据:

cache 1,927
not cache 2,134

测试结果:
开启psCache缓存,性能大概有10%幅度的提升。可考虑开启pscache.

测试说明:

原文地址

上一篇 下一篇

猜你喜欢

热点阅读