连接池用于创建和管理数据库连接的缓冲池技术,缓冲池中的连接可以被任何需要他们的线程使用。当一个线程需要用JDBC对一个数据库操作时,将从池中请求一个连接。当这个连接使用完毕后,将返回到连接池中,等待为其他的线程服务。

连接池的主要优点有以下三个方面。

第一、减少连接创建时间。连接池中的连接是已准备好的、可重复使用的,获取后可以直接访问数据库,因此减少了连接创建的次数和时间。

第二、简化的编程模式。当使用连接池时,每一个单独的线程能够像创建一个自己的JDBC连接一样操作,允许用户直接使用JDBC编程技术。

第三、控制资源的使用。如果不使用连接池,每次访问数据库都需要创建一个连接,这样系统的稳定性受系统连接需求影响很大,很容易产生资源浪费和高负载异常。连接池能够使性能最大化,将资源利用控制在一定的水平之下。连接池能控制池中的连接数量,增强了系统在大量用户应用时的稳定性。

下面,简单的阐述下连接池的工作原理。

连接池技术的核心思想是连接复用,通过建立一个数据库连接池以及一套连接使用、分配和管理策略,使得该连接池中的连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。

连接池的工作原理主要由三部分组成,分别为连接池的建立、连接池中连接的使用管理、连接池的关闭。

第一、连接池的建立。一般在系统初始化时,连接池会根据系统配置建立,并在池中创建了几个连接对象,以便使用时能从连接池中获取。连接池中的连接不能随意创建和关闭,这样避免了连接随意建立和关闭造成的系统开销。Java中提供了很多容器类可以方便的构建连接池,例如Vector、Stack等。

第二、连接池的管理。连接池管理策略是连接池机制的核心,连接池内连接的分配和释放对系统的性能有很大的影响。其管理策略是:

当客户请求数据库连接时,首先查看连接池中是否有空闲连接,如果存在空闲连接,则将连接分配给客户使用;如果没有空闲连接,则查看当前所开的连接数是否已经达到最大连接数,如果没达到就重新创建一个连接给请求的客户;如果达到就按设定的最大等待时间进行等待,如果超出最大等待时间,则抛出异常给客户。

当客户释放数据库连接时,先判断该连接的引用次数是否超过了规定值,如果超过就从连接池中删除该连接,否则保留为其他客户服务。

该策略保证了数据库连接的有效复用,避免频繁的建立、释放连接所带来的系统资源开销。

第三、连接池的关闭。当应用程序退出时,关闭连接池中所有的连接,释放连接池相关的资源,该过程正好与创建相反。

何为数据库连接池?其工作原理是什么?相关推荐

  1. 数据库连接池的工作原理

    对于共享资源,有一个很著名的设计模式:资源池(resource pool).该模式正是为解决资源频繁分配.释放所造成的问题.数据库连接池的基本思想就是为数据库连接建立一个"缓冲池" ...

  2. c#打开数据库连接池的工作机制_详解数据库连接池概念、原理、运行机制等

    概述 数据库连接池是负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个.那么其中的运行机制又是怎样的呢?今天主要介绍一下数据库连接池原理和常用的连接池. ...

  3. jsp获取连接池的实时连接数_一篇看懂数据库连接池概念、原理、运行机制

    概述 数据库连接池是负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个.那么其中的运行机制又是怎样的呢?今天主要介绍一下数据库连接池原理和常用的连接池. ...

  4. mysql连接池的工作原理_连接池工作原理

    连接池工作原理 连接池技术的核心思想是连接复用,通过建立一个数据库连接池以及一套连接使用.分配和管理策略,使得该连接池中的连接可以得到高效.安全的复用,避免了数据库连接频繁建立.关闭的开销. 连接池的 ...

  5. java并发编程——线程池的工作原理与源码解读

    2019独角兽企业重金招聘Python工程师标准>>> 线程池的简单介绍 基于多核CPU的发展,使得多线程开发日趋流行.然而线程的创建和销毁,都涉及到系统调用,比较消耗系统资源,所以 ...

  6. Java并发编程-线程池底层工作原理

    线程池底层工作原理 1.线程池的底层工作流程 1.1.线程池的底层工作原理图 1.2.银行办理业务案例 1.3.线程池的底层工作流程总结 2.线程池用哪个?生产中如何设置合理参数 2.1.在工作中单一 ...

  7. java 工作池_Java线程池的工作原理,好处和注意事项

    线程池的工作原理 一个线程池管理了一组工作线程, 同时它还包括了一个用于放置等待执行 任务的任务队列(阻塞队列) . 一个线程池管理了一组工作线程, 同时它还包括了一个用于放置等待执行 任务的任务队列 ...

  8. 全面解读Java线程池的工作原理

    目录 一.为什么引入线程池技术? 二.Executor框架 2.1 Runnable.Callable与Future接口 2.2 Executor接口 2.2.1 Executor 2.2.2 Exe ...

  9. 彻底搞懂Java线程池的工作原理

    一.线程池的基础知识 创建线程需要占用一定的操作系统资源,在高并发情况下,频繁的创建和销毁线程会大量消耗CPU和内存资源,对程序性能造成很大的影响.为了避免这一问题,Java提供了线程池(通过线程复用 ...

最新文章

  1. Cocos 2d-X Lua 游戏添加苹果内购(一) 图文详解准备流程
  2. CodePush 管理工具 App Center Cli 的常用命令行
  3. ubuntu异常关机,断电重启后进入紧急模式,挂载磁盘SSD失败了怎么办?(Failed mount on XXX)
  4. 操作系统(2)-创建线程的几种方式
  5. 因果和阴阳,哪个更根本?
  6. 机器视觉产业链全解析
  7. 从哪里寻找游戏工具集(Game dev toolset)开发的资料?
  8. Windows10系统教育版和专业版区别在哪里?
  9. SRE稳定性指标:MTBF、MTTR
  10. 5位数的数字黑洞是多少_五位数数字黑洞编程
  11. Android Studio 解决数据库手机电脑不同步
  12. 安装virtualbox可能遇到的错误
  13. 全网最好的子网划分方法与例题解析
  14. 【mysql】变量的基本使用
  15. linux下modprobe命令参数及用法详解--linux加载模块命令
  16. atlas mysql怎么用,MySQL —— Atlas 使用
  17. 关于GR/IR—业务流程篇
  18. 是时候和else关键字说再见了……
  19. 杰奇python采集器_极速杰奇采集器
  20. [惊艳]印度游记:美女就是多!

热门文章

  1. go语言泛型在IDE中语法报错
  2. 数据分析中的严谨问题
  3. MIFI与随身wifi、wifi共享软件,玩坏wifi的几种方法
  4. python sqlachemy模糊查询报错
  5. java实现记录日志
  6. 高通平台开发系列讲解(AtCoP篇)AtCoP架构简介
  7. DbContext 查询(三)
  8. H3C服务器修改启动项,H3C服务器 iFIST快速安装指南-6W102
  9. 塔式服务器系统配置,联想TD350塔式服务器系统安装配置注意事项
  10. bilinear 神经网络_基于多尺度双线性卷积神经网络的多角度下车型精细识别