数据库连接池实现原理|学习笔记

简介: 快速学习数据库连接池实现原理

开发者学堂课程【Java 面试疑难点串讲 2:Java 数据库开发数据库连接池实现原理

】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/25/detail/542


数据库连接池实现原理


如果想实现一个连接池,本质的思想就是实现一个 Connection 的对象数组,但是这个对象数组并不是无限开辟的,是有上限存在的,所以最初的数据库手工连接池的实现可以采用 Map 集合完成。

 

也就是说在进行处理的时候 Map 集合里面保存有全部连接池的可用连接(最小维持数、最大可打开数、最大等待时间)

 

实现思路:

1. 所有的连接对象被 Map 集合所管理,但是这个 Map 集合受到最大连接数的控制,也就是说如果现在需要获取数据库连接,但是发现已经没有可用的连接了,则这个时候应该开辟新的连接,但是同时需要保证连接池中是有上限的;

 

2. 在获取连接的时候如果发现连接已经满了,则这个时候应该追加有一个等待唤醒的控制,也就是说对于连接池的控制,如果发现没有连接,则等待新的连接到来,就可以采用线程的等待与唤醒机制来完成;

 

3. 连接池中的连接使用完成之后一定要关闭,但是这个的关闭并不是彻底的关闭数据库的连接,而是说将这个连接的可用性重新放回到连接池之中,也就是说为连接池里面设置一个标记(标记为 true,那么就表示该连接可用,如果没有 true 的连接了,那么就表示连接池满了,而当把连接放回去之后将这个标记设置为 false,就表示有空余连接了);

 

4. 如果现在要去考虑连接池的实现,最好的做法是使用 ConcurrentHashMap 子类来性,这个类考虑到了并发性,并且也可以有很好的同步处理效果。

相关文章
|
4月前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
|
7天前
|
SQL 关系型数据库 MySQL
php学习笔记-连接操作mysq数据库(基础)-day08
本文介绍了PHP中连接操作MySQL数据库的常用函数,包括连接服务器、设置字符集、关闭连接、选择数据库、结果集释放、获取影响行数以及遍历结果集等操作。通过书籍查询的实例演示了如何使用这些函数进行数据库操作,并提供了一个PHP操纵MySQL数据库的模板。
php学习笔记-连接操作mysq数据库(基础)-day08
|
2月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
49 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
2月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
67 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
|
2月前
|
消息中间件 Kafka 数据库
深入理解Kafka的数据一致性原理及其与传统数据库的对比
【8月更文挑战第24天】在分布式系统中,确保数据一致性至关重要。传统数据库利用ACID原则保障事务完整性;相比之下,Kafka作为高性能消息队列,采用副本机制与日志结构确保数据一致性。通过同步所有副本上的数据、维护消息顺序以及支持生产者的幂等性操作,Kafka在不牺牲性能的前提下实现了高可用性和数据可靠性。这些特性使Kafka成为处理大规模数据流的理想工具。
47 6
|
2月前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
31 6
|
2月前
|
存储 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
33 4
|
2月前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(中)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
25 3
|
2月前
|
开发工具 数据安全/隐私保护 索引
LDAP学习笔记之二:389-DS(RHDS) 增删改查基本操作
LDAP学习笔记之二:389-DS(RHDS) 增删改查基本操作
|
3月前
|
存储 SQL 关系型数据库
(六)MySQL索引原理篇:深入数据库底层揭开索引机制的神秘面纱!
《索引原理篇》它现在终于来了!但对于索引原理及底层实现,相信大家多多少少都有了解过,毕竟这也是面试过程中出现次数较为频繁的一个技术点。在本文中就来一窥`MySQL`索引底层的神秘面纱!
236 5
下一篇
无影云桌面