在实际应用开发中,特别是在WEB应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又费时的工作,如果频繁发生这种数据库操作,系统的性能必然会急剧下降,甚至会导致系统崩溃。数据库连接池技术是解决这个问题最常用的方法,在许多应用程序服务器(例如:Weblogic,WebSphere,JBoss)中,基本都提供了这项技术,无需自己编程,但是,深入了解这项技术是非常必要的。

数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个Vector对象中,一旦数据库连接建立后,不同的数据库访问请求就可以共享这些连接,这样,通过复用这些已经建立的数据库连接,可以克服上述缺点,极大地节省系统资源和时间。

数据库连接池的主要操作如下:
(1)建立数据库连接池对象(服务器启动)。
(2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。
(3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。
(4)存取数据库。
(5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。
(6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。

转载说明

文字转自:http://zhidao.baidu.com/question/488393749.html

图片转自:http://wenku.baidu.com/view/074815d033d4b14e852468c6.html

转载于:https://blog.51cto.com/shrunner/1142917

数据库连接池工作原理相关推荐

  1. 说说数据库连接池工作原理和实现方案?

    **工作原理:**JAVA EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接.客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙.如果当前没有空闲连接,池驱动 ...

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

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

  3. 面试官:谈谈数据库连接池的原理

    来源:https://dwz.cn/oUF6pKOW 这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包. 一.早期我们怎么进行数据库操作 1 ...

  4. 3 连接sybase_今日头条面试官:给我说说数据库连接池的原理?

    作者:敦格 来源:https://urlify.cn/ABJbum 这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包. # 早期我们怎么进行 ...

  5. jdbc连接池工作原理_JDBC连接实际上如何工作?

    jdbc连接池工作原理 The JDBC Connection interface is a part of java.sql package. The java.sql.Connection int ...

  6. c++内存池工作原理

    6.1 自定义内存池性能优化的原理 如前所述,读者已经了解到"堆"和"栈"的区别.而在编程实践中,不可避免地要大量用到堆上的内存.例如在程序中维护一个链表的数据 ...

  7. 线程池工作原理和实现原理

    为什么要使用线程池 平时讨论多线程处理,大佬们必定会说使用线程池,那为什么要使用线程池?其实,这个问题可以反过来思考一下,不使用线程池会怎么样?当需要多线程并发执行任务时,只能不断的通过new Thr ...

  8. 【源码阅读计划】浅析 Java 线程池工作原理及核心源码

    [源码阅读计划]浅析 Java 线程池工作原理及核心源码 为什么要用线程池? 线程池的设计 线程池如何维护自身状态? 线程池如何管理任务? execute函数执行过程(分配) getTask 函数(获 ...

  9. 25张图展示线程池工作原理和实现原理,建议认真阅读,对你有帮助

    上篇<这样的API网关查询接口优化,我是被迫的>文章末尾,有朋友留言提到文中的场景是IO密集型操作,不是CPU密集操作,不需要使用线程池,我猜这位朋友可能想表达的是IO密集且阻塞时间久的不 ...

最新文章

  1. Power Network [POJ - 1459]
  2. 推荐干货 | 我在阿里做运营:八一八运营经典误区
  3. elinks文字浏览器
  4. UE4暴露游戏元素给蓝图
  5. python程序语法元素的描述_Python入门——Python程序语法元素
  6. BZOJ4133 : Answer的排队
  7. BDS Business Development Studio
  8. 在dos窗口中删除services中的服务
  9. CCNA实验:实验一:思科设备基本配置
  10. 链式存储结构的线性表
  11. 解决龙芯2F使用oprofile-0.9.7无法采样应用程序函数的问题
  12. Building Worlds In Unreal 学习笔记——20-23 程序化植被/草Billboard材质/实时虚拟纹理(RVT)的使用
  13. asp 在线发送邮件
  14. 《TCP/IP详解 卷1:协议》学习笔记(未完待续)
  15. java商城如何防止超卖_电商中怎么防止超卖
  16. 详细解读Xbox Series X:比起堆料,它其实更在乎效率
  17. 粒子群算法Fortran代码(OMP并行)
  18. 【励志篇】我的创业历程总结
  19. Java_Java多线程_Java线程池核心参数 与 手动创建线程池
  20. 用计算机答题答案提交后能否改错,湘大职院计算机.VF复习参考题1+详细答案

热门文章

  1. LINUX系统管理----GRUB笔记
  2. 北风设计模式课程---里氏替换原则(Liskov Substitution Principle)
  3. mysql text与blog的区别
  4. python基础学习中常见问题
  5. 关于python 中的 sys.argv 的使用方法
  6. 高性能流媒体服务器EasyDSS前端重构(二) webpack + vue + AdminLTE 多页面提取共用文件, 优化编译时间...
  7. 关于DOM2级事件的事件捕获和事件冒泡
  8. ANDROID自定义视图——onMeasure流程,MeasureSpec详解
  9. [原创]换一份工作要考虑什么?
  10. 创新工场董事长兼首席执行官 李开复 发 言 稿