数据库连接池

简介: 数据库连接池是一组连接集合,一般在应用启动时完成连接创建,减少查询场景发生时创建数据库连接的时间消耗。 一个连接池组件至少需要完成连接创建和收回,实现过程中往一个数组中放入创建完成的连接,用时从数组取出,数据元素减1,用完放回,数据元素加1。

数据库连接池是一组连接集合,一般在应用启动时完成连接创建,减少查询场景发生时创建数据库连接的时间消耗。

一个连接池组件至少需要完成连接创建和收回,实现过程中往一个数组中放入创建完成的连接,用时从数组取出,数据元素减1,用完放回,数据元素加1。取出和放回连接都需要进行加锁。

druid由于采用ReentrantLock可重入锁,公平模式;早期采用非公平模式并发性好,但是非公平性表现比较明显,导致部分获取连接的操作等待时间过长甚至超时。

spring boot 2.0默认的数据库连接池HikariCP,此款连接池在各项基准测评中表现出极高的性能。druid作者曾在github上对于druid和HikariCP的ops比较做了回应,回应指出druid设计初衷是为提供sql执行过程中的监控信息,而且经历阿里系长期大规模验证(官方的说法是只有jboos和druid连接池保持了稳定性)。所以,如果是追求卓越的性能,可以尝试HikariCP连接池;如果追求稳定性和监控、扩展等能力推荐druid。原文见:https://github.com/brettwooldridge/HikariCP/issues/232
大致过程由一个github名为manikantag的小伙说你这个druid不够快呀,然后温少坐不住了,说我这个druid主要是监控和扩展,而且双十一用的倍爽云云。诚然druid已经在java应用中广泛应用,HikariCP的稳定性就待时间考验吧。

一些其他特性:https://github.com/alibaba/druid/wiki/FAQ

一个数据库连接池还应具备以下特性:

  • 扩容:根据最大连接数配置,创建新连接。
  • 缩容:根据最大活跃连接数,空闲连接数,空闲时间,回收连接
  • 保活:定期执行特定SQL,确保连接存活性。
相关文章
|
Java Maven Docker
Idea远程连接Harbor及Maven自动上传镜像
Idea远程连接docker环境+Maven链接harbor仓库自动上传镜像
1500 0
Idea远程连接Harbor及Maven自动上传镜像
|
资源调度 前端开发 CDN
纯css动画库animate.css的用法
纯css动画库animate.css的用法
734 0
|
8月前
|
NoSQL Java API
在Java环境下如何进行Redis数据库的操作
总的来说,使用Jedis在Java环境下进行Redis数据库的操作,是一种简单而高效的方法。只需要几行代码,就可以实现复杂的数据操作。同时,Jedis的API设计得非常直观,即使是初学者,也可以快速上手。
349 94
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的奥秘:探索神经网络的核心原理
本文将深入浅出地介绍深度学习的基本概念,包括神经网络的结构、工作原理以及训练过程。我们将从最初的感知机模型出发,逐步深入到现代复杂的深度网络架构,并探讨如何通过反向传播算法优化网络权重。文章旨在为初学者提供一个清晰的深度学习入门指南,同时为有经验的研究者回顾和巩固基础知识。
415 11
|
人工智能 缓存 运维
LangServe如何革新LLM应用部署?
【10月更文挑战第3天】
314 1
|
XML 编解码 前端开发
wkhtmltopdf 代替 itext 将 url 转成 pdf
wkhtmltopdf 代替 itext 将 url 转成 pdf
236 0
|
算法
空间判断点是否在线段上
空间判断点是否在线段上
206 0
|
存储 监控 安全
深度剖析Linux进程的内部机制:一探/proc/pid的奥秘
深度剖析Linux进程的内部机制:一探/proc/pid的奥秘
2604 0
|
Java Maven
idea调优|maven调优
idea调优|maven调优
507 0
idea调优|maven调优
|
存储 监控
SkyWalking 拓扑功能的性能优化
1. 增加查询的并行度,减少串行耗时。 2. 规避无效查询的触发,避免带来额外消耗。 3. 提升分片检索的命中,缩小检索分片数
564 0