数据库连接池

简介: 数据库连接池是一组连接集合,一般在应用启动时完成连接创建,减少查询场景发生时创建数据库连接的时间消耗。 一个连接池组件至少需要完成连接创建和收回,实现过程中往一个数组中放入创建完成的连接,用时从数组取出,数据元素减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,确保连接存活性。
相关文章
|
1月前
|
监控 Java 数据库连接
|
2月前
|
SQL 网络协议 数据库连接
什么是数据库连接池?为什么需要数据库连接池呢?
什么是数据库连接池?为什么需要数据库连接池呢?
|
7月前
|
网络协议 关系型数据库 MySQL
实现数据库连接池
实现数据库连接池
|
3月前
|
SQL druid Java
Driud数据库连接池的使用
Driud数据库连接池的使用
44 0
|
3月前
|
Java 关系型数据库 MySQL
数据库连接池的实现
数据库连接池的实现
|
5月前
|
Java 关系型数据库 应用服务中间件
数据库连接池对比
数据库连接池对比
|
6月前
|
Java 数据库连接 数据库
一篇文章学会学会c3p0数据库连接池~
一篇文章学会学会c3p0数据库连接池~
|
9月前
|
SQL 缓存 监控
数据库连接池 BoneCP、HikariCP 等
数据库连接池 BoneCP、HikariCP 等
160 0
|
10月前
|
监控 Java 数据库连接
HikariCP连接池
HikariCP连接池
89 0
|
11月前
|
SQL 缓存 Java
C3P0-数据库连接池解读
C3P0-数据库连接池解读
65 0