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

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

开发者学堂课程【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 子类来性,这个类考虑到了并发性,并且也可以有很好的同步处理效果。

相关文章
|
28天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
105 6
|
28天前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
64 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
1月前
|
缓存 算法 关系型数据库
Mysql(3)—数据库相关概念及工作原理
数据库是一个以某种有组织的方式存储的数据集合。它通常包括一个或多个不同的主题领域或用途的数据表。
46 5
Mysql(3)—数据库相关概念及工作原理
|
9天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
24 2
|
1月前
|
SQL 关系型数据库 数据库
SQL数据库:核心原理与应用实践
随着信息技术的飞速发展,数据库管理系统已成为各类组织和企业中不可或缺的核心组件。在众多数据库管理系统中,SQL(结构化查询语言)数据库以其强大的数据管理能力和灵活性,广泛应用于各类业务场景。本文将深入探讨SQL数据库的基本原理、核心特性以及实际应用。一、SQL数据库概述SQL数据库是一种关系型数据库
36 5
|
1月前
|
SQL 关系型数据库 MySQL
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作
|
2月前
|
SQL 关系型数据库 MySQL
php学习笔记-连接操作mysq数据库(基础)-day08
本文介绍了PHP中连接操作MySQL数据库的常用函数,包括连接服务器、设置字符集、关闭连接、选择数据库、结果集释放、获取影响行数以及遍历结果集等操作。通过书籍查询的实例演示了如何使用这些函数进行数据库操作,并提供了一个PHP操纵MySQL数据库的模板。
php学习笔记-连接操作mysq数据库(基础)-day08
|
1月前
|
SQL 存储 Java
sql注入原理与实战(二)数据库原理
sql注入原理与实战(二)数据库原理
|
3月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
53 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
3月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
107 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
下一篇
无影云桌面