0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

連接池工作原理

工程師 ? 來源:網(wǎng)絡(luò)整理 ? 作者:h1654155205.5246 ? 2019-03-22 16:16 ? 次閱讀

連接池工作原理

連接池技術(shù)的核心思想是連接復(fù)用,通過建立一個數(shù)據(jù)庫連接池以及一套連接使用、分配和管理策略,使得該連接池中的連接可以得到高效、安全的復(fù)用,避免了數(shù)據(jù)庫連接頻繁建立、關(guān)閉的開銷。

連接池的工作原理主要由三部分組成,分別為連接池的建立、連接池中連接的使用管理、連接池的關(guān)閉。

第一、連接池的建立

一般在系統(tǒng)初始化時,連接池會根據(jù)系統(tǒng)配置建立,并在池中創(chuàng)建了幾個連接對象,以便使用時能從連接池中獲取。連接池中的連接不能隨意創(chuàng)建和關(guān)閉,這樣避免了連接隨意建立和關(guān)閉造成的系統(tǒng)開銷。Java中提供了很多容器類可以方便的構(gòu)建連接池,例如Vector、Stack等。

第二、連接池的管理

連接池管理策略是連接池機(jī)制的核心,連接池內(nèi)連接的分配和釋放對系統(tǒng)的性能有很大的影響。其管理策略是:

當(dāng)客戶請求數(shù)據(jù)庫連接時,首先查看連接池中是否有空閑連接,如果存在空閑連接,則將連接分配給客戶使用;如果沒有空閑連接,則查看當(dāng)前所開的連接數(shù)是否已經(jīng)達(dá)到最大連接數(shù),如果沒達(dá)到就重新創(chuàng)建一個連接給請求的客戶;如果達(dá)到就按設(shè)定的最大等待時間進(jìn)行等待,如果超出最大等待時間,則拋出異常給客戶。當(dāng)客戶釋放數(shù)據(jù)庫連接時,先判斷該連接的引用次數(shù)是否超過了規(guī)定值,如果超過就從連接池中刪除該連接,否則保留為其他客戶服務(wù)。

該策略保證了數(shù)據(jù)庫連接的有效復(fù)用,避免頻繁的建立、釋放連接所帶來的系統(tǒng)資源開銷。

第三、連接池的關(guān)閉

當(dāng)應(yīng)用程序退出時,關(guān)閉連接池中所有的連接,釋放連接池相關(guān)的資源,該過程正好與創(chuàng)建相反。

連接池工作原理

連接池的運(yùn)作原理

在實(shí)際應(yīng)用開發(fā)中,特別是在WEB應(yīng)用系統(tǒng)中,如果JSP、Servlet或EJB使用JDBC直接訪問數(shù)據(jù)庫中的數(shù)據(jù),每一次數(shù)據(jù)訪問請求都必須經(jīng)歷建立數(shù)據(jù)庫連接、打開數(shù)據(jù)庫、存取數(shù)據(jù)和關(guān)閉數(shù)據(jù)庫連接等步驟,而連接并打開數(shù)據(jù)庫是一件既消耗資源又費(fèi)時的工作,如果頻繁發(fā)生這種數(shù)據(jù)庫操作,系統(tǒng)的性能必然會急劇下降,甚至?xí)?dǎo)致系統(tǒng)崩潰。數(shù)據(jù)庫連接池技術(shù)是解決這個問題最常用的方法,在許多應(yīng)用程序服務(wù)器(例如:Weblogic,WebSphere,JBoss)中,基本都提供了這項(xiàng)技術(shù),無需自己編程,但是,深入了解這項(xiàng)技術(shù)是非常必要的。

數(shù)據(jù)庫連接池技術(shù)的思想非常簡單,將數(shù)據(jù)庫連接作為對象存儲在一個Vector對象中,一旦數(shù)據(jù)庫連接建立后,不同的數(shù)據(jù)庫訪問請求就可以共享這些連接,這樣,通過復(fù)用這些已經(jīng)建立的數(shù)據(jù)庫連接,可以克服上述缺點(diǎn),極大地節(jié)省系統(tǒng)資源和時間。

數(shù)據(jù)庫連接池的主要操作如下:

(1)建立數(shù)據(jù)庫連接池對象(服務(wù)器啟動)。

(2)按照事先指定的參數(shù)創(chuàng)建初始數(shù)量的數(shù)據(jù)庫連接(即:空閑連接數(shù))。

(3)對于一個數(shù)據(jù)庫訪問請求,直接從連接池中得到一個連接。如果數(shù)據(jù)庫連接池對象中沒有空閑的連接,且連接數(shù)沒有達(dá)到最大(即:最大活躍連接數(shù)),創(chuàng)建一個新的數(shù)據(jù)庫連接。

(4)存取數(shù)據(jù)庫。

(5)關(guān)閉數(shù)據(jù)庫,釋放所有數(shù)據(jù)庫連接(此時的關(guān)閉數(shù)據(jù)庫連接,并非真正關(guān)閉,而是將其放入空閑隊(duì)列中。如實(shí)際空閑連接數(shù)大于初始空閑連接數(shù)則釋放連接)。

(6)釋放數(shù)據(jù)庫連接池對象(服務(wù)器停止、維護(hù)期間,釋放數(shù)據(jù)庫連接池對象,并釋放所有連接)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3712

    瀏覽量

    64025
收藏 人收藏

    評論

    相關(guān)推薦

    連接器的工作原理是什么?

    工作原理連接器主要由接頭、絕緣體和金屬觸點(diǎn)三部分組成。接頭一般由塑料制成,是連接器的主體;絕緣體用于保護(hù)連接器,其作用是防止電路之間的耦合、脈沖和靜電放電等異常電源;金
    的頭像 發(fā)表于 07-06 08:02 ?727次閱讀
    <b class='flag-5'>連接</b>器的<b class='flag-5'>工作原理</b>是什么?

    連接器的基本結(jié)構(gòu)和工作原理

    連接器,作為電子設(shè)備中不可或缺的組成部分,其基本結(jié)構(gòu)和工作原理對于電子設(shè)備的正常運(yùn)行至關(guān)重要。本文將詳細(xì)介紹連接器的基本結(jié)構(gòu)、工作原理以及其在電子設(shè)備中的應(yīng)用。 一、
    的頭像 發(fā)表于 06-20 09:24 ?1290次閱讀

    555集成芯片的工作原理

    555集成芯片的工作原理主要基于其內(nèi)部電路結(jié)構(gòu)和外部連接電路的共同作用。
    的頭像 發(fā)表于 03-19 15:46 ?1936次閱讀

    什么是Socket連接?Socket的工作原理 它與TCP連接有什么關(guān)系?

    什么是Socket連接?Socket的工作原理 它與TCP連接有什么關(guān)系? Socket連接是一種網(wǎng)絡(luò)連接,用于在計(jì)算機(jī)網(wǎng)絡(luò)中的兩個節(jié)點(diǎn)之間
    的頭像 發(fā)表于 01-22 16:10 ?1637次閱讀

    地線的工作原理

    地線的工作原理? 地線是電力系統(tǒng)中非常重要的一部分,它起著保護(hù)人身安全和設(shè)備正常工作的作用。本文將詳細(xì)介紹地線的工作原理,包括地線的定義、作用、類型、布置和接地原理等內(nèi)容,以期全面了解地線的
    的頭像 發(fā)表于 12-07 11:37 ?3632次閱讀

    線程的創(chuàng)建方式有幾種

    線程是一種用于管理和調(diào)度線程的技術(shù),能夠有效地提高系統(tǒng)的性能和資源利用率。它通過預(yù)先創(chuàng)建一組線程并維護(hù)一個工作隊(duì)列,將任務(wù)提交給線程來處理,從而減少線程的創(chuàng)建和銷毀次數(shù),避免了線程頻繁創(chuàng)建和銷毀
    的頭像 發(fā)表于 12-04 16:52 ?660次閱讀

    Java redis鎖怎么實(shí)現(xiàn)

    在Java中實(shí)現(xiàn)Redis鎖涉及到以下幾個方面:Redis的安裝配置、Redis連接池的使用、Redis數(shù)據(jù)結(jié)構(gòu)的選擇、實(shí)現(xiàn)分布式鎖的幾種方式等。 一、Redis的安裝配置 下載Redis并解壓縮
    的頭像 發(fā)表于 12-04 10:47 ?911次閱讀

    線程的運(yùn)轉(zhuǎn)流程圖 化技術(shù)實(shí)踐案例解析

    作為一名Java開發(fā)人員,化技術(shù)或多或少在業(yè)務(wù)代碼中使用。常見的包括線程、連接池等。也是因?yàn)镴ava語言超級豐富的基建,基本上這些化能力都有著相對成熟的“工具”。
    的頭像 發(fā)表于 11-24 10:22 ?361次閱讀
    線程<b class='flag-5'>池</b>的運(yùn)轉(zhuǎn)流程圖 <b class='flag-5'>池</b>化技術(shù)實(shí)踐案例解析

    化技術(shù)的應(yīng)用實(shí)踐

    作為一名Java開發(fā)人員,化技術(shù)或多或少在業(yè)務(wù)代碼中使用。常見的包括線程、連接池等。也是因?yàn)镴ava語言超級豐富的基建,基本上這些化能力都有著相對成熟的“工具”。
    的頭像 發(fā)表于 11-24 10:22 ?405次閱讀
    <b class='flag-5'>池</b>化技術(shù)的應(yīng)用實(shí)踐

    內(nèi)存主要解決的問題

    程 序占有的資源數(shù)量。 經(jīng)常使用的技術(shù)包括內(nèi)存、線程連接池等,其中尤以內(nèi)存和線程 使
    的頭像 發(fā)表于 11-13 15:23 ?571次閱讀
    內(nèi)存<b class='flag-5'>池</b>主要解決的問題

    TCP和UDP連接介紹

    作為一名開發(fā)人員我們經(jīng)常會聽到HTTP協(xié)議、TCP/IP協(xié)議、UDP協(xié)議、Socket、Socket長連接、Socket連接池等字眼,然而它們之間的關(guān)系、區(qū)別及原理并不是所有人都能理解清楚
    的頭像 發(fā)表于 11-11 15:40 ?747次閱讀
    TCP和UDP<b class='flag-5'>連接</b>介紹

    MySQL與Redis數(shù)據(jù)庫連接池應(yīng)用

    一、概念 數(shù)據(jù)庫連接池(Connection pooling)是程序啟動時建立足夠的數(shù)據(jù)庫連接,并將這些連接組成一個連接池,由程序動態(tài)地對池中的連接
    的頭像 發(fā)表于 11-10 16:40 ?415次閱讀
    MySQL與Redis數(shù)據(jù)庫<b class='flag-5'>連接池</b>應(yīng)用

    了解連接池、線程、內(nèi)存、異步請求

    可被重復(fù)使用像常見的線程、內(nèi)存、連接池、對象都具有以上的共同特點(diǎn)。 連接池 什么是數(shù)據(jù)庫連接池
    的頭像 發(fā)表于 11-09 14:44 ?869次閱讀
    了解<b class='flag-5'>連接池</b>、線程<b class='flag-5'>池</b>、內(nèi)存<b class='flag-5'>池</b>、異步請求<b class='flag-5'>池</b>

    什么是內(nèi)存

    使用時就會變得非???捷,大大提高程序運(yùn)行效率。 在計(jì)算機(jī)中,有很多使用“”這種技術(shù)的地方,除了內(nèi)存,還有連接池、線程、對象等。以服
    的頭像 發(fā)表于 11-08 16:26 ?693次閱讀
    什么是內(nèi)存<b class='flag-5'>池</b>

    重新定義連接-物聯(lián)網(wǎng)卡流量解決方案

    重新定義連接-物聯(lián)網(wǎng)卡流量解決方案
    的頭像 發(fā)表于 09-22 10:11 ?470次閱讀