数据库连接池的工作原理以及这项技术的产生

  为什么要有这项技术?

  数据库连接是一种非常珍贵而且有限的资源,尤其是在多用户的网络上,对数据库的管理好坏直接影响整个系统的性能

一、建立一个数据库连接是一项非常耗时的操作,在页面应用中如果每次用户都需要创建一次数据库连接,那么响应的时间就会非常长,会影响用户体验

二、数据库连接数是有限的,如果管理不好用户经常与数据库建立连接却忘记了释放,那么运行时间久了,数据库连接资源将会被耗尽,当再有新的用户操作时将会进行等待,直到资源被释放,这对系统的可用性造成了影响。因此管理好数据库连接资源非常重要,尤其是web应用系统。

  数据库连接池的工作原理

  数据库连接池是负责分配,管理并释放数据库连接,它允许重复只用一个现有数据库连接,而不是新建一个数据库连接,同时它还负责释放时间超过最大空闲时间的数据库连接,避免因为没有数据库连接而造成的遗漏。

  在j2ee中,服务器启动时会创建一定数量的池连接,并维持不少于这个数量的连接,当用户需要数据库连接时首先使用池连接(空闲的池连接),而不是创建一个新的数据库连接,并标记为繁忙状态,当用户使用完这个数据库连接后会释放当前连接,并标记为空间连接。如果使用时没有空闲连接,服务器会根据参数的配置去创建新的数据库连接,采用这种方法会大大提高系统的响应时间,提高运行效率。另一方面提高操作性能,数据库连接是会释放当前空闲时间超过最大空闲时间的数据库连接,避免发生因没有释放数据库连接的遗漏。

时间: 2024-11-05 21:48:50

数据库连接池的工作原理以及这项技术的产生的相关文章

数据库连接池的工作原理

对于共享资源,有一个很著名的设计模式:资源池(resource pool).该模式正是为解决资源频繁分配.释放所造成的问题.数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”.预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需要从缓冲池中取出一个了,使用完毕后再放回去.我们可以通过设定连接池最大数来防止系统无尽的与数据库连接.更为重要的是我们可以通过连接池的管理机制监视数据库连接使用数量,使用情况,为系统开发,测试以及性能调整提供依据. 连接池的相关问题分析: 1.并发问题.

Java 连接池的工作原理(转)

原文:Java 连接池的工作原理 什么是连接? 连接,是我们的编程语言与数据库交互的一种方式.我们经常会听到这么一句话“数据库连接很昂贵“. 有人接受这种说法,却不知道它的真正含义.因此,下面我将解释它究竟是什么.[如果你已经知道了,你可以跳到它的工作原理部分] 创建连接的代码片段: String connUrl = "jdbc:mysql://your.database.domain/yourDBname"; Class.forName("com.mysql.jdbc.Dr

【JAVA】 Java 连接池的工作原理

什么是连接? 连接,是我们的编程语言与数据库交互的一种方式.我们经常会听到这么一句话“数据库连接很昂贵“. 有人接受这种说法,却不知道它的真正含义.因此,下面我将解释它究竟是什么.[如果你已经知道了,你可以跳到它的工作原理部分]     创建连接的代码片段: String connUrl = "jdbc:mysql://your.database.domain/yourDBname"; Class.forName("com.mysql.jdbc.Driver");

多线程之:模拟实现线程池的工作原理

[一]线程池存在的价值: ==>多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力.    ==>假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间. ==>如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能. [二]合理利用线程池能够带来三个好处. * 第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗. * 第二:提高响应速度.

线程池的工作原理与源码解读

随着cpu核数越来越多,不可避免的利用多线程技术以充分利用其计算能力.所以,多线程技术是服务端开发人员必须掌握的技术. 线程的创建和销毁,都涉及到系统调用,比较消耗系统资源,所以就引入了线程池技术,避免频繁的线程创建和销毁. 在Java用有一个Executors工具类,可以为我们创建一个线程池,其本质就是new了一个ThreadPoolExecutor对象.线程池几乎也是面试必考问题.本节结合源代码,说说ThreadExecutor的工作原理 一.线程池创建 先看一下ThreadPoolExec

线程池的工作原理及使用示例

欢迎探讨,如有错误敬请指正 如需转载,请注明出处  http://www.cnblogs.com/nullzx/ 1. 为什么要使用线程池? 我们现在考虑最简单的服务器工作模型:服务器每当接收到一个客户端请求时就创建一个线程为其服务.这种模式理论上可以工作的很好,但实际上会存在一些缺陷,服务器应用程序中经常出现的情况是单个客户端请求处理的任务很简单但客户端的数目却是巨大的,因此服务器在创建和销毁线程所花费的时间和系统资源可能比处理客户端请求处理的任务花费的时间和资源更多. 线程池技术就是为了解决

线程池ThreadPoolExecutor工作原理

前言 工作原理 如果使用过线程池,细心的同学肯定会注意到,new一个线程池,但是如果不往里面提交任何任务的话,main方法执行完之后程序会退出,但是如果向线程池中提交了任务的话,main方法执行完毕之后程序是不会自动退出的,是什么原理,或者说是什么原因导致任务提交到线程池之后任务执行完程序无法自动退出的呢?下面就让我们趴开线程池的源码,一探究竟. 我们直接从ThreadPoolExecutor的execute方法开始说起.线程提交到ThreadPoolExecutor执行分为三种情况,具体如下:

线程池的工作原理阅读总结

线程池使用了一种池化技术,和很多其他池化技术一样,都是为了更高效的利用资源,例如链接池,内存池等等 线程池一共有五种状态,运行状态,待关闭状态,停止状态,整理状态,终止状态,一个线程池的核心参数有很多,每个参数都有着特殊的作用,各个参数聚合在一起 后将完成整个线程池的完整工作,每一个工作线程中都维持着一个Thread,线程池的重点之一就是控制线程资源合理高效的使用,所以必须控制工作线程的个数,所以要保存当前线程中的工作线程个数. 线程池设计了两个变量来协作,分别是核心线程数和最大线程数,核心线程

数据库连接池的工作机制

J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接. 客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙.如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定. 当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接. 实现方式:返回的Connection是原始Connection的代理,代理Connection的close方法不是真正关连接,而是把它代理的connection对象还回到连接池中