这个测试的目的是验证当前常用数据库连接池的性能。

testcase

  Connection conn = dataSource.getConnection();PreparedStatement stmt = conn.preparedStatement("select 1");ResultSet rs = stmt.executeQuery();while (rs.next()) {}rs.close();stmt.close();conn.close();
  • test codehttps://github.com/alibaba/druid/blob/master/src/test/java/com/alibaba/druid/benckmark/pool/Case1.java

  • test config

property value
initialSize 10
minPoolSize 10
maxPoolSize 50

测试各种并发场景下执行申请1,000,000(一百万)次总耗时的性能对比。

#环境

  • OS linux 3.5.0-19-generic X86_64
  • CPU XEON E5-2450 双路共16核32物理线程
  • Memory 48G

这是一台双路至强CPU的工作站,比我之前在mac book pro上做的测试,更接近真实服务器的运行环境。

JDK 1.6.0_38

数据库连接池 1 thread 2 threads 5 threads 10 threads 20 threads 50 threads 100 threads
druid 248 710 1,133 1,134 905 1,107 1,468
dbcp 660 1,522 3,545 4,176 3,671 4,237 14,129
boneCP 3,522 2,930 2,579 3,745 7,434 11,991 14,584
c3p0 4,275 9,509 3,371 10,439 13,472 19,848 36,153
proxool 7,187 7,707 11,037 10,777 15,222(Error) 18,100(Error) 21,547(Error)
tomcat-jdbc 372 736 1,879 1,727 1,576 1,322 12,545
jboss-datasource 1,326 1,184 2,928 3,765 3,099 3,278 10,812

JDK 1.7.0_10

数据库连接池 1 thread 2 threads 5 threads 10 threads 20 threads 50 threads 100 threads
druid 309 605 1,028 947 962 897 1,238
dbcp 924 1,461 4,062 4,030 4,908 5,505 14,517
boneCP 3,047 2,055 2,549 3,821 6,367 12,865 18,832
c3p0 4,018 8,206 8,897 10,667 12,367 25,822 38,681
proxool 6912 4,714 4,851 11,908 16,066(Error) 19,568(Error) 18,036(Error)
tomcat-jdbc 400 740 1,811 1,707 1,618 1,624 11,905
jboss-datasource 1,369 1,105 4,002 3,089 3,483 3,665 11,782

结果分析

  1. Druid是性能最好的数据库连接池,tomcat-jdbc和druid性能接近。
  2. proxool在激烈并发时会抛异常,完全不靠谱。在并发10的情况下,会使用11或者12个物理连接。
  3. c3p0和proxool都相当慢,慢到影响sql执行效率的地步。
  4. bonecp性能并不优越,采用LinkedTransferQueue并没有能够获得性能提升。
  5. jboss-datasource虽然稳定,但是性能很糟糕
  6. boneCP和c3p0完全不遵循minPoolSize的配置,只要有活动请求,就会用到maxPoolSize。
  7. bonecp和c3p0存在较大并发时使用的物理连接超过maxPoolSize数量,达到maxPoolSize+1

来源:https://github.com/alibaba/druid/wiki/linux-benchmark

常用Java数据库连接池性能测试相关推荐

  1. 主流Java数据库连接池比较及前瞻

    本文转载自微信公众号「工匠小猪猪的技术世界」 主流数据库连接池 常用的主流开源数据库连接池有C3P0.DBCP.Tomcat Jdbc Pool.BoneCP.Druid等 C3p0: 开源的JDBC ...

  2. 主流Java数据库连接池分析(C3P0,DBCP,TomcatPool,BoneCP,Druid)

    http://developer.51cto.com/art/201807/579402.htm 主流数据库连接池 常用的主流开源数据库连接池有C3P0.DBCP.Tomcat Jdbc Pool.B ...

  3. Java数据库连接池--DBCP浅析

    转载自   Java数据库连接池--DBCP浅析 前言对于数据库连接池, 想必大家都已经不再陌生, 这里仅仅设计Java中的两个常用数据库连接池: DBCP和C3P0(后续会更新). 一. 为何要使用 ...

  4. Java 数据库连接池的技术选型都应考虑哪些要素

    为什么80%的码农都做不了架构师?>>>    数据库连接池是一个牵涉面很广的话题,对于大型系统,数据库连接池的好坏,关系到系统的性能和稳定性,因此,选好数据库连接池,是系统在架构时 ...

  5. java数据库连接池选择及开发配置

    一.数据库连接池概述 数据库连接的建立是一种耗时.性能低.代价高的操作,频繁的数据库连接的建立和关闭极大的影响了系统的性能.数据库连接池是系统初始化过程中创建一定数量的数据库连接放于连接池中,当程序需 ...

  6. Java数据库连接池实现原理

    https://blog.csdn.net/tuke_tuke/article/details/51532510 一般来说,Java应用程序访问数据库的过程是: ①装载数据库驱动程序: ②通过jdbc ...

  7. JAVA数据库连接池实现

    转载自   JAVA数据库连接池实现 连接池的管理用了了享元模式,这里对连接池进行简单设计. 一.设计思路 1.连接池配置属性DBbean:里面存放可以配置的一些属性 2.连接池接口IConnecti ...

  8. mysql连接池源码_一个JAVA数据库连接池实现源码

    原文链接:http://www.open-open.com/lib/view/open1410875608164.html // // 一个效果非常不错的JAVA数据库连接池. // from:htt ...

  9. java 常用的数据库连接池,java通过数据库连接池的方式

    数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏 ...

最新文章

  1. Mongodb数据库介绍
  2. Spring/SpringBoot常用注解总结
  3. gcc对C语言的扩展:局部标签声明(Locally Declared Labels)
  4. 机器学习笔记十二之异常检测
  5. TensorFlow HOWTO 1.3 逻辑回归
  6. 再谈JavaScript时钟中的16ms精度问题.
  7. 11gR2rac的两个bug
  8. app国际化多语言strings.xml 与 Excel 互相转换的工具,支持iOS和Android
  9. ZBrush与数位板雕刻模型如何才能结合
  10. IIS部署添加网站发布网站
  11. 高级计量经济学及stata应用 陈强 2021年5月1-5日 社会科学 经济学 管理学 金融 医学等各个领域
  12. 传小米第一款车售价超30万元;苹果操作系统首次打败安卓,市场份额超过50%;TensorFlow 2.8.3 发布|极客头条
  13. 北京中医药大学22春《生物化学B》平时作业1【专职辅导答案】
  14. 什么是投入产出比(ROI)以及如何提升投入产出比?
  15. 深入浅出 proxy 系列之一:Proxy 是什么
  16. 如何做到数据分析报告(五)
  17. 简单易学汇编语言入门_个人笔记
  18. 论文研读 —— 7. Very Deep Convolutional Networks for Large-Scale Image Recognition (1/3)
  19. Vivado使用:综合篇(二)综合选项设置
  20. argue的一个用法

热门文章

  1. SDU CS 期末考回忆版合集
  2. qq互联登录授权php配置,php如何整合qq互联登录
  3. 为什么要努力读书学习,一位清华妈妈总结了7条,太到位了
  4. 外文文献下载网站;数据获取网站;中文文献下载网站;论文原创性保真网站;外包项目申请网站;大数据比赛收录网站;提高编程能力;代码分享网站
  5. VLOG的文字遮罩(利用文字显示内部)
  6. 面试 以及面试中对公司更好的了解
  7. 《王者荣耀》还有什么比被鲁班炮死更憋屈的死法?
  8. 徒手撸一个好玩的App:美图
  9. c语言实现陷波器算法,50Hz数字陷波器的设计.doc
  10. 计算机应用专业顶岗实习计划,计算机学生顶岗实习计划(网络版)