资源池(Resource Pool)
针对共享资源,为了解决资源的频繁分配和释放所产生的问题。
连接池基本思想
是为数据库连接建立一个缓存池。预先在缓冲池放入一定数量的连接,当需要建立数据库连接时,只需从缓存池从取出一个连接,使用完毕之后放回去。
连接池关键问题
1. 并发问题
2. 多数据库服务器和多用户
建立单例模式的连接池管理类,用Map<连接池名称, 连接池对象>管理。
3. 事务处理
ALL-ALL-NOTHING 原则,即对一组sql要么全做,要么全不做。
4. 连接池的分配和释放
空闲池,提供连接给需要连接的程序,存放未被使用的连接,回收被使用完的连接。
超过最大连接数要等待一定时间timeout.
5. 连接池的配置和维护
最小连接数是系统启动时所创建的连接数。如果创建过多,则系统启动就慢,但创建后系统的响应速度会很快;
如果创建过少,则系统启动的很快,响应起来就慢。最小连接数在开发时设小一点,服务器启动比较快。
连接池实现模型
连接池类(DBConnectionPool)
1. 从连接池获取或创建可用连接
2. 使用完毕后,把连接返还给连接池
3. 在系统关闭前,断开所有连接并释放连接占用的系统资源
4. 处理无效连接(原来标记为可用,由于某种原因不可用,如超时、通讯等)
5. 限制连接池的连接总数不低于预置的最低连接数和不高于最高连接数
连接池管理类(DBConnectionPoolManager)
1. 是连接池的包装类(wrapper)符合单例模式,即一个系统只有一个连接池管理类实例
2. 装载并注册特定数据库的JDBC驱动程序
3. 根据配置文件信息创建连接池对象
4. 为方便管理多个连接池对象,为每个连接池对象取一个名字,建立<名称,对象>Map映射
5. 跟踪客户的使用连接情况,以便需要时关闭连接释放资源
分享到:
相关推荐
BoneCP 连接池学习笔记 例子 代码
NULL 博文链接:https://housheng33.iteye.com/blog/1522705
C++学习笔记和实践项目,实践项目包括Json工具类、设计模式的C++实现、消息队列、智能指针,linux下的并发控制工具、线程池,epoll管理器和Mysql连接池、STL容器的快捷输出工具和页面置换算法(FIFO, LRU, LFU)的...
数据库学习笔记 MySQL数据库、Oracle数据库、JDBC基础、JDBC事物、数据连接池、dbUtils工具、Service层的事物处理
我们所学习的均为jdbc2.0规范,jdbc1.0为直接连接,而jdbc2.0它有JNDI服务,在服务器启动时自动创建一个连接池,定义了一个DataSource接口,用其标准才能使用JDBC连接池
j2eejava学习笔记 连接池的配置 使用方法 和Context.xml,wed.xml配置文件
SSH整合学习笔记之spring与hibernate整合(二)之c3p0 spring与hibernate整合基于XML方式--c3p0数据库连接池的使用。
Swoole入门的学习笔记,从零开始学Swoole。 持续更新... 项目结构 ├─ Swoole │ ├─ 1.Swoole 启动一个服务,开启了哪些进程和线程? │ ├─ 2.Swoole Timer 的应用 │ ├─ 3.Swoole Task 的应用 │ ├─ 4....
模块2:连接池,Mysql自身有个连接池,为了连接线程的复用,Mysql将其进行了池化。将连接资源进行了池化,使得连接线程可以复用。(mysql 5.5以后) 模块3:SQL接口,接受SQL命令后,调用SQL接口,执行并返回相应的...
jdbc如何连接数据库,连接池代码,里面是源码和讲解,初学者的最好资料,老师讲解后自己整理的,简单也懂。
jsp开发常见的问题,比如乱码问题、数据库连接池问题、servlet过滤器问题等等。
使用该类要导入几个必须的jar包,分别是spring-jdbc-4.0.0.RELEASE.jar、spring-orm-4.0.0.RELEASE.jar、spring-tx-4.0.0.RELEASE.jar,还需要导入相应的数据库驱动和数据库连接池所需要的jar包。 使用步骤 编写...
{13.6}连接池}{199}{section.13.6} {13.6.1}Wrapper}{199}{subsection.13.6.1} {13.7}DAO}{199}{section.13.7} {13.8}java.util.Date与java.sql.Date比较}{200}{section.13.8} {13.9}Meta Data}{201}{section....
python爬虫学习笔记 1.4 (Request简单使用) Requests: 让 HTTP 服务人类 虽然Python的标准库中 urllib 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 ...
从最基础连接步骤到JDBC高级连接池等
(2)实现资源池,例如数据库连接池 (3)使用信号量将任何一种容器变成有界阻塞容器 栅栏 能够阻塞一组线程直到某个事件发生 栅栏和闭锁的区别 所有线程必须同时到达栅栏位置,...
07 | 连接池:阻塞式连接池和多路复用连接池的差异 08 | 微服务网关(Kong):网关在微服务架构中的作用 09 | 配置中心:如何在微服务治理中发挥更大的作用? 10 | 可观测性之 Trace:更快速定位问题 11 | 可观测性...
目录 1.1 Spring 框架学习路线:...........................................................................................................................4 1.2 Spring 框架的概述:...........................