`
shenyuc629
  • 浏览: 195652 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

数据库连接池的基本工作原理

    博客分类:
  • Java
阅读更多
JDBC 概述
   JDBC(Java Database Connectivity,Java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系型数据库(如Oracle、Sybase、SQL Server、Access等)提供统一访问接口,它由一组Java语言编写的类和接口组成,使数据库开发人员能够用标准JavaAPI编写数据库应用程序。
连接池技术
   1、连接池原理
      连接池技术的核心思想是:连接复用,通过建立一个数据库连接池以及一套连接使用、分配、管理策略,使得该连接池中的连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。另外,由于对JDBC中的原始连接进行了封装从而方便了数据库应用对于连接的使用(特别是对于事物处理),提高了开发效率,也正是因为这个封装层的存在,隔离了应用的本身的处理逻辑和具体数据库访问逻辑,使应用本身的复用成为可能。连接池主要由三部分组成:连接池的建立、连接池中连接的使用管理、连接池的关闭。

连接池的建立:
   用程序中建立的连接池其实是一个静态的。所谓静态连接池是指连接池中的连接在系统初始化时就已分配好,且不能随意关闭连接。Java中提供了很多容器类可以方便的构建连接池,如:Vector、Stack、Servlet、Bean等,通过读取连接属性文件Connections.properties与数据库实例建立连接。在系统初始化时,根据相应的配置创建连接并放置在连接池中,以便需要使用时能从连接池中获取,这样就可以避免连接随意的建立、关闭造成的开销。

连接池的管理:
   连接池管理策略是连接池机制的核心。当连接池建立后,如何对连接池中的连接进行管理,解决好连接池内连接的分配和释放,对系统的性能有很大的影响。连接的合理分配、释放可提高连接的复用,降低了系统建立新连接的开销,同时也加速了用户的访问速度。下面介绍连接池中连接的分配、释放策略。连接池的分配、释放策略对于有效复用连接非常重要,我们采用的方法是一个很有名的设计模式:Reference Counting(引用记数)。该模式在复用资源方面应用的非常广泛,把该方法运用到对于连接的分配释放上,为每一个数据库连接,保留一个引用记数,用来记录该连接的使用者的个数。具体的实现方法是:当客户请求数据库连接时,首先查看连接池中是否有空闲连接(指当前没有分配出去的连接)。如果存在空闲连接,则把连接分配给客户并作相应处理(即标记该连接为正在使用,引用计数加1)。如果没有空闲连接,则查看当前所开的连接数是不是已经达到maxConn(最大连接数),如果没达到就重新创建一个连接给请求的客户;如果达到就按设定的maxWaitTime(最大等待时间)进行等待,如果等待maxWaitTime后仍没有空闲连接,就抛出无空闲连接的异常给用户。当客户释放数据库连接时,先判断该连接的引用次数是否超过了规定值,如果超过就删除该连接,并判断当前连接池内总的连接数是否小于minConn(最小连接数),若小于就将连接池充满;如果没超过就将该连接标记为开放状态,可供再次复用。可以看出正是这套策略保证了数据库连接的有效复用,避免频繁地建立、释放连接所带来的系统资源开销。

连接池的关闭:
   应用程序退出时,应关闭连接池,此时应把在连接池建立时向数据库申请的连接对象统一归还给数据库(即关闭所有数据库连接),这与连接池的建立正好是一个相反过程。


连接池的配置:
   数据库连接池中到底要放置多少个连接,才能使系统的性能更佳,用minConn和maxConn来限制。minConn是当应用启动的时候连接池所创建的连接数,如果过大启动将变慢,但是启动后响应更快;如果过小启动加快,但是最初使用的用户将因为连接池中没有足够的连接不可避免的延缓了执行速度。因此应该在开发的过程中设定较小minConn,而在实际应用的中设定较大minConn。maxConn是连接池中的最大连接数,可以通过反复试验来确定此饱和点。为此在连接池类ConnectionPool中加入两个方法getActiveSize()和getOpenSize(),ActiveSize 表示某一时间有多少连接正被使用,OpenSize表示连接池中有多少连接被打开,反映了连接池使用的峰值。将这两个值在日志信息中反应出来, minConn的值应该小于平均ActiveSize,而maxConn的值应该在activeSize和OpenSize之间。
分享到:
评论

相关推荐

    数据库连接池的图解原理

    #### 三、数据库连接池的基本原理 为了克服上述问题,引入数据库连接池的概念是非常必要的。连接池的基本思想是在程序启动时预先创建一定数量的数据库连接,并将它们存储在一个容器(通常是内存中的队列)中。当...

    数据库连接池的基本原理

    ### 数据库连接池的基本原理深度解析 在现代软件开发中,数据库操作是极其常见的需求,而数据库连接的创建与管理则是影响系统性能的关键因素之一。数据库连接池技术正是为了解决这一问题而生,它通过预创建并维护...

    Java中数据库连接池原理机制的详细讲解.pdf

    #### 二、数据库连接池基本概念及原理 **1. 资源池设计模式** 资源池设计模式是一种经典的软件设计模式,用于解决资源频繁分配与释放带来的性能瓶颈问题。对于数据库连接这种宝贵的资源来说,每次创建和销毁连接...

    Java数据库连接池的原理与应用.pdf

    数据库连接池的工作原理可从以下几个方面理解: 1. 建立连接池 在应用程序启动时,系统会预先创建一定数量的数据库连接,并将这些连接存放在一个“池”里。这些连接是预先配置好的,并且不会被随意关闭,之后应用...

    Java jdbc数据库连接池总结

    数据库连接池(connection pool)的工作原理是为了解决资源的频繁分配、释放所造成的问题。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时...

    代理模式之静态代理---数据库连接池对象实现原理

    首先,我们要理解数据库连接池的基本工作原理。数据库连接池维护着一个数据库连接的集合,当应用程序需要一个连接时,它会从池中借用一个而不是直接创建新的连接;当使用完毕后,连接会被归还到池中,而非关闭,这样...

    C# 数据库连接池

    本文将详细介绍C#中数据库连接池的工作原理、优点以及如何在实际项目中应用。 首先,我们来理解数据库连接池的基本概念。数据库连接池是一组预先初始化的数据库连接,当程序需要与数据库建立连接时,可以从池中获取...

    数据库连接池的原理机制学习

    ### 数据库连接池的原理机制深入解析 #### 一、基本概念及原理 数据库连接池是一种用于管理和重用数据库连接的技术。它通过预创建并维护一定数量的数据库连接,使得应用程序能够快速获取并释放这些连接,从而提高...

    java写的数据库连接池

    本文将深入探讨数据库连接池的工作原理、重要性以及如何在Java中实现一个简单的连接池。 首先,数据库连接池是管理数据库连接的一种机制,它允许应用程序重复使用已建立的数据库连接,而不是每次需要时都创建新的...

    配置数据库连接池

    在给定的标题“配置数据库连接池”中,我们可以深入探讨数据库连接池的概念、工作原理,以及如何配置Oracle9i和MySQL的连接池。 数据库连接池的基本思想是预先创建并维护一定数量的数据库连接,当应用需要与数据库...

    java_jdbc数据库连接池总结

    Java JDBC 数据库连接池是 Java 应用程序访问数据库的基本原理之一。Java 语言通过 JDBC 技术访问数据库,JDBC 是一种“开放”的方案,为数据库应用开发人员和数据库前台工具开发人员提供了一种标准的应用程序设计...

    JAVA数据库连接池

    Java数据库连接池是Java开发中一个非常重要的技术,它主要用于管理数据库连接,提高数据库操作...通过深入学习《最新修改java数据库连接池原理与应用(陈迁小组)》这份资料,你将对数据库连接池有更全面、深入的理解。

    java数据库连接池

    知识点一:Java数据库连接池基本概念 数据库连接池是一种容器,它预先创建一定数量的数据库连接,并将这些连接保存在一个可共享的池子中。当应用程序请求数据库连接时,连接池会提供一个现有的连接,而无需重新建立...

    数据库连接池java代码实现

    本文将深入探讨如何使用Java代码来实现一个简单的数据库连接池,并解释其核心概念和工作原理。 连接池的基本思想是维护一组预初始化的数据库连接,当应用程序需要时,可以从池中获取一个连接,使用完毕后,再归还回...

    数据库连接池的图解原理以及DB_常用命令_Oracle

    首先,让我们理解数据库连接池的工作原理。数据库连接池在应用程序启动时预创建一定数量的数据库连接,这些连接在空闲时被存储起来,当应用程序需要与数据库交互时,可以从连接池中获取一个已经建立好的连接,而不是...

    Java中数据库连接池原理机制的详细讲解

    ### Java中数据库连接池原理机制的详细讲解 #### 一、引言 在现代软件开发中,特别是基于Java的企业级应用开发中,数据库连接管理是一个关键环节。由于数据库连接是昂贵的资源,频繁地创建与关闭连接将严重影响系统...

Global site tag (gtag.js) - Google Analytics