五大主流数据库连接池的深度剖析与对比

简介: HikariCP通过优化concurrentBag和fastStatementList等集合,提升了并发的读写效率。它采用threadlocal缓存连接,并大量运用CAS机制,以最大程度地减少lock的使用。从字节码的维度进行代码优化,确保方法尽量控制在35个字节码以内,以提升JVM处理效率。HikariCP在此基础上的进一步优化措施包括:利用ping命令进行mysql连接,以及通过Sharding-JDBC的Driver、Server和Sidecar三个版本,构建灵活多样的生态系统,满足不同需求和环境。对于线上应用,Sharding-JDBC-Driver可提供直连数据库的最优性能,而Sha

本文旨在深入探讨主流数据库连接池在Java语言中的应用与比较,通过详细的内容解析,为Java语言学习者提供有益的参考和指导。

011.主流数据库连接池介绍

◉ C3P0特点

C3P0是一个支持JDBC3规范的开源连接池,它不仅实现了数据源与JNDI的绑定,还支持JDBC2的标准扩展。尽管C3P0在小型系统中表现尚可,但其单线程性能限制影响了其在大型系统中的应用。

◉ DBCP特点

DBCP基于commons-pool,适合小型系统,具有简单的特性。作为Apache推出的Java数据库连接池项目,DBCP基于Jakarta commons-pool的对象池机制,为Tomcat等容器提供了连接池组件。虽然它简单易用,但单线程的特性限制了其并发性能。

◉ Tomcat Jdbc Pool特点

Tomcat Jdbc Pool是Tomcat在7.0版本后引入的新连接池模块,相较于之前的common-dbcp,它提供了高并发性能,异步获取连接,支持XA Connection,适用于高并发应用环境。它基于Tomcat JULI日志框架,支持异步获取连接,并集成了JMX和XA Connection功能。

◉ BoneCP特点

BoneCP性能优越,集成于Hibernate,支持多种高级功能,代码 lean。官方宣称BoneCP为高效、免费且开源的Java数据库连接池。其设计初衷在于提升数据库连接池性能,据测试数据显示,BoneCP的速度极为出色。此外,BoneCP已完美融入Hibernate和DataNucleus等持久化产品中。其特色包括高度可扩展性、快速性能、连接状态切换的回调机制、直接连接访问、自动化重置、JMX支持、懒加载能力,以及XML和属性文件的灵活配置方式。

◉ Druid特点

Druid提供监控功能,高可用性,适合大数据分析,开源。Druid不仅是一个高性能的数据库连接池,还提供了强大的监控功能,使其成为大数据实时查询和分析的理想选择。即便在代码部署、机器故障或其他系统问题时,Druid仍能保持100%的稳定性。其特色包括为分析监控而设计、快速的交互式查询、高可用性、可扩展性,以及开源特性。

022.主流连接池功能对比<h1><p id="9tl.jxust.org.cn">5</p></h1> <h1><p id="xx1.kdd6a2.org.cn">8</p></h1> <h1><p id="9kv.zhaoyu.mobi">1</p></h1> <h1><p id="osw.goodchirping.org.cn">3</p></h1> <h1><p id="qr5.zhaomu.mobi">1</p></h1> <h1><p id="mx6.fqgf.org.cn">7</p></h1> <h1><p id="oih.menghu.org.cn">0</p></h1> <h1><p id="8py.xinjia.org.cn">3</p></h1> <h1><p id="yrw.51dior.org.cn">3</p></h1> <h1><p id="oih.cyrus.org.cn">8</p></h1>  

◉ HikariCP性能剖析

HikariCP通过优化集合提升读写效率,采用threadlocal缓存连接,优化字节码以提升JVM性能,与Sharding-JDBC结合提供灵活生态系统。HikariCP通过优化concurrentBag和fastStatementList等集合,提升了并发的读写效率。它采用threadlocal缓存连接,并大量运用CAS机制,以最大程度地减少lock的使用。从字节码的维度进行代码优化,确保方法尽量控制在35个字节码以内,以提升JVM处理效率。HikariCP在此基础上的进一步优化措施包括:利用ping命令进行mysql连接,以及通过Sharding-JDBC的Driver、Server和Sidecar三个版本,构建灵活多样的生态系统,满足不同需求和环境。对于线上应用,Sharding-JDBC-Driver可提供直连数据库的最优性能,而Sharding-JDBC-Server则便于通过MySQL命令行或UI客户端进行数据查询和DDL语句执行。它们共享同一注册中心集群,实现配置自动推送。当数据库拆分导致连接数激增时,可以考虑在线上直接使用Sharding-JDBC-Server来有效控制连接数。未来,Sharding-JDBC-Sidecar也将加入,其部署架构值得期待。


相关文章
|
存储 缓存 NoSQL
把ruoyi-vue前后端分离项目的redis缓存改为本地缓存cache
把ruoyi-vue前后端分离项目的redis缓存改为本地缓存cache
1873 0
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
druid Java 数据库连接
什么是连接池?为什么需要连接池呢?连接池的组成原理又是什么呢?
什么是连接池?为什么需要连接池呢?连接池的组成原理又是什么呢?
2690 0
什么是连接池?为什么需要连接池呢?连接池的组成原理又是什么呢?
|
Java API Maven
敏感数据的保护伞——SpringBoot Jasypt加密库的使用
我们经常会在yml配置文件中存放一些敏感数据,比如数据库的用户名、密码,第三方应用的秘钥等等。这些信息直接以明文形式展示在文件中,无疑是存在较大的安全隐患的,所以今天这篇文章,我会借助jasypt实现yml文件中敏感信息的加密处理。
6326 1
敏感数据的保护伞——SpringBoot Jasypt加密库的使用
|
监控 druid Java
Spring Boot 3 集成 Druid 连接池详解
在现代的Java应用中,使用一个高效可靠的数据源是至关重要的。Druid连接池作为一款强大的数据库连接池,提供了丰富的监控和管理功能,成为很多Java项目的首选。本文将详细介绍如何在Spring Boot 3项目中配置数据源,集成Druid连接池,以实现更高效的数据库连接管理。
13667 2
Spring Boot 3 集成 Druid 连接池详解
|
Java Spring
Spring Boot3整合knife4j(swagger3)
Spring Boot3整合knife4j(swagger3)
4975 1
|
JSON fastjson Java
FastJson 完全学习指南(初学者从零入门)
摘要:本文是FastJson的入门学习指南,主要内容包括: JSON基础:介绍JSON格式特点、键值对规则、数组和对象格式,以及嵌套结构的访问方式。FastJson是阿里巴巴开源的高性能JSON解析库,具有速度快、功能全、使用简单等优势,并介绍如何引入依赖,如何替换Springboot默认的JackJson。 核心API: 序列化:将Java对象转换为JSON字符串,演示对象、List和Map的序列化方法; 反序列化:将JSON字符串转回Java对象,展示基本对象转换方法;
3966 77
|
存储 消息中间件 druid
Druid 架构原理及核心特性详解
Druid 是一个分布式、支持实时多维OLAP分析的列式存储数据处理系统,适用于高速实时数据读取和灵活的多维数据分析。它通过Segment、Datasource等元数据概念管理数据,并依赖Zookeeper、Hadoop和Kafka等组件实现高可用性和扩展性。Druid采用列式存储、并行计算和预计算等技术优化查询性能,支持离线和实时数据分析。尽管其存储成本较高且查询语言功能有限,但在大数据实时分析领域表现出色。
3407 19
|
缓存 Java 数据库连接
Mybatis一级缓存、二级缓存详讲
本文介绍了MyBatis中的查询缓存机制,包括一级缓存和二级缓存。一级缓存基于同一个SqlSession对象,重复查询相同数据时可直接从缓存中获取,减少数据库访问。执行`commit`操作会清空SqlSession缓存。二级缓存作用于同一namespace下的Mapper对象,支持数据共享,需手动开启并实现序列化接口。二级缓存通过将数据存储到硬盘文件中实现持久化,为优化性能,通常在关闭Session时批量写入缓存。文章还说明了缓存的使用场景及注意事项。
1183 7
Mybatis一级缓存、二级缓存详讲
|
Java 调度
HashMap为什么会死循环?
本文分析了在Java中HashMap导致死循环的原因,主要由于在JDK 1.7及之前版本中,多线程环境下进行扩容操作时,头插法导致的链表反转,以及线程调度问题,从而形成循环链表。
2019 1
HashMap为什么会死循环?

热门文章

最新文章