java数据库连接池性能对比

深入探讨Java中数据库连接池的三种主流实现 数据库连接池(Connection Pool)是一种创建、管理和关闭数据库连接的技术。其基本原理是预创建一定数量的数据库连接,并将这些连接放入一个池(Pool)中进行维护。当应用需要进行数据库操作时,从池中获取一个空闲的连接进行使用。使用完毕后,将连接返回给池中,而不是立即关闭,这样可以减少频繁地建立和销毁数据库连接带来的开销。C3P0是开源社区中一个非常流行的JDBC连接池,由OpenSymphony组织开发。 阅读详情

testcase

  Connection conn = dataSource.getConnection();
  PreparedStatement stmt = conn.preparedStatement("select 1");
  ResultSet rs = stmt.executeQuery();
  while (rs.next()) {
  }
  rs.close();
  stmt.close();
  conn.close();

测试各种并发场景下执行申请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
数据库压力测试 自己写的多线程数据库压力测试,用于多线程测试并发获得结果 立即下载

相关推荐

软硬件协同设计的大小端问题

缘起 最近需要在soc系统内做协处理器,加速AES加密运算,寄存器一次读取32bit,AES一次处理128bit,因此在数据拼接的时候,需要考虑大小端的问题,特来记录一番。 一、什么是大小端 大小端的问题发生在寄存器和内存间传递数据,这点非常重要,很多地方简单地说是数据存储方式,其实不准确。追根溯源,大小端问题是在设计load,store指令的时候考虑的,因此本质是寄存器和内存交互的问题,其他地方不会发生。 比如c语言里定义一个变量int a=ox1234,那么查看在线汇编平台的对应汇编代码: # 给2号寄

http://www.icfgblog.com/ 612

java sqlite util 工具类,测试类

准备工作:下载sqlite-jdbc的jar包可以从maven 仓库下载:https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc/3.19.3java操作sqlite数据库简单的工具类:import java.lang.reflect.Method; import java.sql.Connection; import java.sql.D

殷长庆的博客 2245

【首份】2023年30米分辨率土地利用遥感监测数据

为了恢复和重建我国土地利用变化的现代过程,更好地预测、预报土地利用变化趋势,地球资源数据云以美国陆地卫星Landsat 遥感影像数据作为主信息源,结合Sentinel系列数据,通过人工目视解译和机器学习方法,建立了国家尺度1:10 万比例尺多时期土地利用/土地覆盖遥感监测数据库(CNLUCC)因早期Landsat数据时空覆盖缺失,1972-1977年合成第一期数据,1978-1985年合成第二期数据,1986年起每年度生成一期数据。投影:Albers正轴等面积双标准纬线圆锥投影南标准纬线:25°N。

地球资源数据云的官方博客 3668

Java应用的数据库连接池连接池性能测试

通过上述内容,我们学习了如何对Java应用中的数据库连接池进行性能测试。通过使用JMeter等工具以及编写模拟代码,我们可以评估连接池在高并发条件下的性能,并根据测试结果进行优化。本文著作权归聚娃科技微赚淘客系统开发者团队,转载请注明出处!

微赚开发者技术分享博客 816

DDR3性能优化实战:如何用Xilinx MIG控制器实现800MHz稳定读写(7系列FPGA版)

本文深入探讨了在Xilinx 7系列FPGA上使用MIG控制器实现DDR3存储器800MHz稳定高速读写的实战优化技巧。文章聚焦于高级时序调优、Bank Machine调度策略、用户接口设计优化以及利用ILA进行信号完整性调试,旨在帮助工程师突破性能瓶颈,实现接近理论峰值的稳定带宽,并为进一步冲刺更高频率提供进阶调参指南。

seed的博客 774

AIDD机器学习深度学习药物发现与设计教程总结

AIDD(AI Drug Discovery & Design):是近年来非常火热的技术应用,且已经介入到新药设计到研发的大部分环节当中,为新药发现与开发带来了极大的助力。倾向于机器对数据库信息的自我学习,可以对数据进行提取和学习,一定程度上避免了化合物设计过程中的试错路径,同时还会带来很多全新的结构,为药物发现打破常规的结构壁垒。覆盖了机器学习和深度学习,能与新药研发相结合并实质性的应用到靶点预测、高通量筛选、药物设计、药物的ADMET性质预测等;且算力方面,由早期应用于药物发现领域的决策树、随机

wutianlin0723的博客 6814

java连接池性能测试报告

一   当前问题 1  高并发异常          目前应用的 Proxool 连接池,在高并发情况下会出现:          1. DataSource.getConnection() 方法会根据 ProxoolDataSource.simultaneousBuildThro...

杜天微的博客 991

STC8单片机低功耗延时优化实践:从循环等待到定时唤醒

本文深入探讨了STC8单片机低功耗延时优化的核心方法,即利用掉电唤醒定时器(WKT)替代传统的循环等待,实现从“空转耗电”到“定时唤醒”的转变。通过实战代码演示了如何编写低功耗延时函数,将待机电流从mA级降至μA级,并分析了精度、唤醒时间等关键权衡点,为电池供电的物联网设备提供了有效的续航优化方案。

pea55的博客 324

主流Java数据库连接池比较

转载自:https://www.jianshu.com/p/b9b98ac3e010 文章目录一、主流数据库连接池二、HikariCP性能分析:三、前瞻,未来到底是HikariCP还是Druid的天下?四、从Sharding-jdbc架构演进看未来 一、主流数据库连接池 C3p0: 实现数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。Hibernate、Spring使用。单线程,性...

ZERO 3022

从爱好者到工程师:如何低成本体验RFSoC ZU47DR?性能实测与避坑指南

本文详细介绍了如何低成本体验赛灵思RFSoC ZU47DR芯片,包括二手开发板选购、租赁服务、精简开发环境搭建等实用方案。通过性能实测与避坑指南,帮助爱好者和工程师在有限预算下充分利用这款集成了ARM处理器和FPGA的高性能芯片,降低开发门槛。

weixin_42525005的博客 214

RK3588部署实战:利用RGA硬件加速单元优化YOLOv5的图像预处理与推理性能

摘要:本文探讨了在Rockchip芯片上使用RGA(Rockchip图形加速器)实现YOLOv5图像预处理的过程。通过对比RGA和OpenCV两种方式处理图像的速度,发现RGA加速效果不明显且不稳定(13-17fps),分析原因可能是图片尺寸过小和内存操作消耗时间。文章详细介绍了RGA版本的resize和letterbox实现代码,包括图像缩放、边缘填充等功能,并提供了预处理流程和性能监控方法。结果表明在当前场景下RGA尚未达到预期加速效果,可能与官方代码下架和实现细节有关。

know_F0727的博客 292

Java应用中的数据库连接池优化:HikariCP/Druid配置与性能对比

选择合适的连接池,并对其进行精细的配置,直接影响到应用的性能、稳定性和资源利用率。我们将重点对比两种流行的连接池:HikariCP和Druid,从配置到性能,深入探讨它们的特点和适用场景。这样避免了频繁的连接创建和销毁,提高了数据库访问效率,降低了资源消耗,从而提升了应用程序的整体性能。Druid是一个功能强大的数据库连接池,除了基本的连接池功能外,还提供了监控、SQL解析、加密等高级特性。数据库连接池的优化是一个持续的过程,需要根据应用的实际运行情况进行监控和调整。Druid的配置也比较灵活,可以通过。

weixin_41455464的博客 1025

C++ Qt6 qml CMakeLists.txt如何添加qrc文件

本文介绍了在Qt6项目中如何通过CMake管理QML图片资源。相比Qt5的qmake,CMake需要手动创建qrc文件并配置CMakeLists.txt。关键步骤包括:1)创建resources.qrc文件并添加图片资源;2)在CMakeLists.txt中设置CMAKE_AUTORCC为ON开启自动资源处理;3)使用qt_add_resources将qrc文件绑定到项目。配置完成后,可通过"qrc:alias"方式引用资源图片,解决了相对路径管理复杂的问题。

琅嬛福地 1453

Java面试-数据库连接池:HikariCP、Druid 原理与性能对比

每次查询都要,系统直接卡死!没错!数据库连接的创建和销毁是昂贵操作TCP 三次握手用户名密码认证权限校验内存分配数据库连接池(Connection Pool)就是为了解决这个问题——它像一个“连接仓库”,预先创建一批连接,用完不扔,放回池中复用。HikariCP:以“速度”著称Druid:以“功能”见长准备好了吗?我们出发!⚡📦场景推荐追求极致性能✅ HikariCP需要强大监控✅ Druid金融、安全要求高✅ Druid(SQL 防火墙)微服务、云原生。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

连接驱动_借 Go 语言 database/sql 包谈数据库驱动和连接池设计

即使你不了解 Go 语言,阅读本文也不会有障碍公众号 Young_Blog什么是池化技术database/sql 包设计哲学极简接口调用关系连接池设计sql.DB 对象关键属性建立连接释放连接清理连接总结什么是池化技术池化技术 (Pool) 是一种很常见的编程技巧,在请求量大时能明显优化应用性能,降低系统频繁建连的资源开销。我们日常工作中常见的有数据库连接池、线程池、对象池等,它们的特点都是将 ...

weixin_29296241的博客 144

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

JDBC、C3P0、DBCP、Druid 数据源连接池使用的对比总结.md

Java的数据库连接性能对比 JDBC: jdbc - 全名是 Java data base connectivity;翻译为 Java数据库连接 它是一个面向对象的程序接口(API);可以通过它访问到各类的 关系型数据库[注意:关系型数据库] 它不属于某一个数据库的接口,而是可以用于定义程序与数据库连接规范,通过一整套接口,由各个不同的数据库厂商去完成所对应的实现类,由sun公司提出! 步...

杨校的博客 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java 数据库连接池:HikariCP 与 Druid 的对比

HikariCP以卓越性能和易用配置著称,适用于高性能应用;Druid功能丰富,监控强大,适用于复杂企业应用。两者各有优势,选择取决于具体需求。

我码玄黄的博客 1887

数据库连接池技术对比:HikariCP vs Druid性能分析

在现代Java应用开发中,数据库连接池是提升应用性能的关键组件之一。合理选择和配置连接池不仅能够显著提升数据库访问性能,还能有效管理系统资源。本文将深入对比两个主流的Java数据库连接池:HikariCP和Druid,从性能、功能特性、配置复杂度等多个维度进行全面分析。

exlink2012的专栏 1036

JDBC 与数据库连接池的区别与联系

JDBC是数据库交互的基础API,而连接池是在此基础上的优化技术。现代Java应用开发中,应该始终使用连接池管理数据库连接,这是提升性能、可靠性和资源利用率的关键实践。

刘皇叔说Java的博客 544

java中几种常用连接池的基本使用

使用数据库连接池主要是避免多次重复的资源申请、释放造成GC频繁。这里是主要关于java中dbcp2、alibaba druid、HikariCP这三种常用连接池的基本使用。其他一些不常用的像c3p0、Vibur等就不做介绍了。 数据库基础连接 关于JDBC(Java Database Connectivity)不做介绍,其示例如下: // db.properties driver=com.mysq...

zhugl的博客 4624

Java数据库连接池深度对比:HikariCP vs Druid vs Tomcat JDBC

性能优先:选择HikariCP监控需求:选择Druid传统Web应用具体到技术决策:在Spring Boot项目中,默认使用HikariCP;当需要详细监控时启用Druid;在Tomcat传统应用中保持技术栈统一。"没有最好的连接池,只有最合适的连接池。" —— 连接池设计哲学。

吴晓斌的博客 1887

Java数据库连接池:HikariCP与Druid的对比

Java 数据库连接池:HikariCP 与 Druid 的对比 数据库连接池:HikariCP 1. 卓越的性能表现 HikariCP 在数据库连接池领域以其卓越的性能脱颖而出。 其字节码经过精心优化,减少了不必要的开销,使得连接获取和释放的速度极快。 在高并发场景下,HikariCP 能够以最小的延迟和资源消耗提供高...

qq_35485206的博客 1151

java mysql连接池比较_java 数据库连接池和普通连接 对比

packagecom.adao.c3p0;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importcom.mysql.jdbc.jdbc2.optional.My...

weixin_40008870的博客 167

Java数据库连接池深度对比分析

开发者首次发布: 2012年定位: 高性能、轻量级连接池当前状态: Spring Boot 2.x默认连接池。

ma451152002的专栏 1208

Java中的连接池管理:HikariCP与DBCP的对比与优化

如果项目中已经使用了DBCP并且运行良好,没有性能瓶颈,那么继续使用DBCP也未尝不可,但建议逐步迁移到HikariCP以获得更好的性能和更简洁的配置管理。在Java应用开发中,数据库连接池是一个非常关键的组件,它可以极大地提升数据库访问性能,同时有效地管理数据库连接。HikariCP在资源管理上更加精细,它采用了一些智能的策略来减少数据库连接的开销,比如默认的空闲连接测试机制和连接泄漏检测功能。相比之下,DBCP的配置较为复杂,需要设置较多的参数来达到相似的效果。

技术研究中心 1267
上一篇: 设计模式之外观模式
下一篇: 面试问题某个项目中遇到过什么问题
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值