数据库和jdbc回顾

数据库的发展
早期的数据库模型,网状模型和层级模型
其他的数据模型,对象模型和文档模型

1970年,IBM的员工发表一篇论文,提倡使用关系型数据库模型。
1980年,推出sql语言,DB2数据库成为现象级产品
1990年,Mysql出现了
2010年,Nosql被提出,非关系型数据库走入大众视野。

(二)JDBC

JDBC = Java Data Base Connectivity (java数据库连接)

是一种用来执行sql语句的api, 是访问不同数据库的统一标准

使用方式: 程序 - JDBC - 数据库驱动 - 数据库

DriverManager 驱动
Connection 连接参数
Statement 提交sql语句
ResultSet 返回结果

数据库连接池的工作原理

“资源池”,也叫“缓冲池”,解决资源频繁被分配和释放的浪费问题。
可以更好的调度资源的使用,以及监控对数据库的压力和性能情况。
image.png
需要实现的功能:
1)从连接池获取或创建连接
2)使用完毕后,将连接返回给连接池
3)在系统关闭前,确认断开所有连接并释放资源
4)管理连接数量,和已有连接的可用性

核心参数:
1)最小连接数,是一直保持的数据库连接,不能很大,会造成资源浪费。
2)最大连接数,是可以申请的最多连接数量,如果超过此数值,新的连接请求会放到等待队列中。
3)引用计数:记录连接的使用者个数,服务于连接的复用。

核心原理:
本质上是对连接的复用。是从创建连接、管理连接到释放连接的过程。
1) 系统初始化时,创建连接(最小连接数),使用容器来承装它们,如list。
2) 分配和管理的策略:
有新的获取连接请求时,查看是否有空闲连接,如果有直接分配,如果没有查看是否达到最大连接数,如果没有达到,创建新的连接,如果达到,创建一个等待时间,如果超过等待时间返回请求失败或抛出异常。
有新的释放连接请求时,查看连接的引用次数,如果超过了规定阈值,需要从池中删除连接。如果没有超过,继续使用。
3)连接池的关闭,关闭所有连接以及释放所有资源。
4)在并发和事务的使用上,需要注意,如果要事务相互独立,保障某一时间内一个连接只分配给一个线程。