一、三种连接池的区别
# 这里的三种连接池指的是:C3p0,Druid和DBCP
| C3p0 | Druid | DBCP |
---|
线程同步 | 单线程 | 多线程、异步 | 单线程 |
开源项目集成 | Spring、Hibernate | Tomcat组件 | Druid |
PSCache连接池关键指标 | 支持 | 支持 | 支持 |
LRU性能关键指标 | 否 | 是 | 否 |
ExceptionSorter容错特性 | 否 | 否 | 是 |
PSCache-Oracle-Optimized | 否 | 是 | 否 |
监控 | Jmx、Log | Jmx、Log、Http | Jmx |
可拓展性 | 差 | 好 | 差 |
连接池管理 | 队列 | 数组、CopyOnWriteArrayList(COW) | LinkedBlockingDeque,FIFO队列、FILO堆栈 |
Tomcat数据源、JNDI | 数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展 | 支持JNDI配置com.alibaba.druid.pool.DruidDataSourceFactory | 支持JNDI配置,需要加入jconn3.jar |
代码复杂度 | 复杂 | 中等 | 中等超过60个类,600KB |
更新维护 | 否 | 是 | 否 |
特点 | 代码逻辑复杂,不易维护,性能较差,适用于小型系统 | 阿里开源,为分析监控设计,快速的交互式查询;高可用;可扩展 | 依赖于common-pool;并发量低,性能不好,适用于小型系统 |
# PSCache:PreparedStatementCache。用于保存与数据库交互的preparedStatement对象。
# LRU:Least Recently Used。最近最少使用算法,是一种简单的缓存算法,遵从LRU,有助于数据库服务器优化。
# ExceptionSorter:【异常分类器】:剔除“不可用连接”,当网络断开或者数据库服务器Crash时,连接池里面会存在“不可用连接”,是判断连接池是否稳定的重要标志。
# PSCache-Oracle-Optimized:对Oracle Jdbc的优化,启用内部的EnterImplicitCache等方法优化能够减少内存的占用。
# 表格参考
https://www.likecs.com/show-204277876.html?sc=700
https://blog.csdn.net/weixin_44371237/article/details/113758872
mianshigee.com/tutorial/Druid/3b8b351373624b70.md
# 知识点参考:
https://blog.csdn.net/zdx1515888659/article/details/79792339
https://www.mianshigee.com/tutorial/Druid/452caf873b3a56bf.md