連接池工作原理
連接池技術(shù)的核心思想是連接復(fù)用,通過(guò)建立一個(gè)數(shù)據(jù)庫(kù)連接池以及一套連接使用、分配和管理策略,使得該連接池中的連接可以得到高效、安全的復(fù)用,避免了數(shù)據(jù)庫(kù)連接頻繁建立、關(guān)閉的開銷。
連接池的工作原理主要由三部分組成,分別為連接池的建立、連接池中連接的使用管理、連接池的關(guān)閉。
第一、連接池的建立
一般在系統(tǒng)初始化時(shí),連接池會(huì)根據(jù)系統(tǒng)配置建立,并在池中創(chuàng)建了幾個(gè)連接對(duì)象,以便使用時(shí)能從連接池中獲取。連接池中的連接不能隨意創(chuàng)建和關(guān)閉,這樣避免了連接隨意建立和關(guān)閉造成的系統(tǒng)開銷。Java中提供了很多容器類可以方便的構(gòu)建連接池,例如Vector、Stack等。
第二、連接池的管理
連接池管理策略是連接池機(jī)制的核心,連接池內(nèi)連接的分配和釋放對(duì)系統(tǒng)的性能有很大的影響。其管理策略是:
當(dāng)客戶請(qǐng)求數(shù)據(jù)庫(kù)連接時(shí),首先查看連接池中是否有空閑連接,如果存在空閑連接,則將連接分配給客戶使用;如果沒(méi)有空閑連接,則查看當(dāng)前所開的連接數(shù)是否已經(jīng)達(dá)到最大連接數(shù),如果沒(méi)達(dá)到就重新創(chuàng)建一個(gè)連接給請(qǐng)求的客戶;如果達(dá)到就按設(shè)定的最大等待時(shí)間進(jìn)行等待,如果超出最大等待時(shí)間,則拋出異常給客戶。當(dāng)客戶釋放數(shù)據(jù)庫(kù)連接時(shí),先判斷該連接的引用次數(shù)是否超過(guò)了規(guī)定值,如果超過(guò)就從連接池中刪除該連接,否則保留為其他客戶服務(wù)。
該策略保證了數(shù)據(jù)庫(kù)連接的有效復(fù)用,避免頻繁的建立、釋放連接所帶來(lái)的系統(tǒng)資源開銷。
第三、連接池的關(guān)閉
當(dāng)應(yīng)用程序退出時(shí),關(guān)閉連接池中所有的連接,釋放連接池相關(guān)的資源,該過(guò)程正好與創(chuàng)建相反。

連接池的運(yùn)作原理
在實(shí)際應(yīng)用開發(fā)中,特別是在WEB應(yīng)用系統(tǒng)中,如果JSP、Servlet或EJB使用JDBC直接訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù),每一次數(shù)據(jù)訪問(wèn)請(qǐng)求都必須經(jīng)歷建立數(shù)據(jù)庫(kù)連接、打開數(shù)據(jù)庫(kù)、存取數(shù)據(jù)和關(guān)閉數(shù)據(jù)庫(kù)連接等步驟,而連接并打開數(shù)據(jù)庫(kù)是一件既消耗資源又費(fèi)時(shí)的工作,如果頻繁發(fā)生這種數(shù)據(jù)庫(kù)操作,系統(tǒng)的性能必然會(huì)急劇下降,甚至?xí)?dǎo)致系統(tǒng)崩潰。數(shù)據(jù)庫(kù)連接池技術(shù)是解決這個(gè)問(wèn)題最常用的方法,在許多應(yīng)用程序服務(wù)器(例如:Weblogic,WebSphere,JBoss)中,基本都提供了這項(xiàng)技術(shù),無(wú)需自己編程,但是,深入了解這項(xiàng)技術(shù)是非常必要的。
數(shù)據(jù)庫(kù)連接池技術(shù)的思想非常簡(jiǎn)單,將數(shù)據(jù)庫(kù)連接作為對(duì)象存儲(chǔ)在一個(gè)Vector對(duì)象中,一旦數(shù)據(jù)庫(kù)連接建立后,不同的數(shù)據(jù)庫(kù)訪問(wèn)請(qǐng)求就可以共享這些連接,這樣,通過(guò)復(fù)用這些已經(jīng)建立的數(shù)據(jù)庫(kù)連接,可以克服上述缺點(diǎn),極大地節(jié)省系統(tǒng)資源和時(shí)間。
數(shù)據(jù)庫(kù)連接池的主要操作如下:
(1)建立數(shù)據(jù)庫(kù)連接池對(duì)象(服務(wù)器啟動(dòng))。
(2)按照事先指定的參數(shù)創(chuàng)建初始數(shù)量的數(shù)據(jù)庫(kù)連接(即:空閑連接數(shù))。
(3)對(duì)于一個(gè)數(shù)據(jù)庫(kù)訪問(wèn)請(qǐng)求,直接從連接池中得到一個(gè)連接。如果數(shù)據(jù)庫(kù)連接池對(duì)象中沒(méi)有空閑的連接,且連接數(shù)沒(méi)有達(dá)到最大(即:最大活躍連接數(shù)),創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)連接。
(4)存取數(shù)據(jù)庫(kù)。
(5)關(guān)閉數(shù)據(jù)庫(kù),釋放所有數(shù)據(jù)庫(kù)連接(此時(shí)的關(guān)閉數(shù)據(jù)庫(kù)連接,并非真正關(guān)閉,而是將其放入空閑隊(duì)列中。如實(shí)際空閑連接數(shù)大于初始空閑連接數(shù)則釋放連接)。
(6)釋放數(shù)據(jù)庫(kù)連接池對(duì)象(服務(wù)器停止、維護(hù)期間,釋放數(shù)據(jù)庫(kù)連接池對(duì)象,并釋放所有連接)。
-
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
4078瀏覽量
68520
發(fā)布評(píng)論請(qǐng)先 登錄
這個(gè)電路干啥用的呢?它的工作原理是怎么樣?
433M無(wú)線模塊的工作原理和距離
生產(chǎn)環(huán)境數(shù)據(jù)庫(kù)連接池耗盡的全流程排查與性能優(yōu)化實(shí)戰(zhàn)
一文詳解透射電鏡中的菊池衍射
工業(yè)連接器在水下工作原理:以凌科連接器為例
Ingress Nginx性能調(diào)優(yōu)配置方案
C語(yǔ)言內(nèi)存池使用
知識(shí)分享|連接器的工作原理?
語(yǔ)音控制模塊工作原理
FLASH的工作原理與應(yīng)用
GPIO配置的工作原理是什么?
云電競(jìng)服務(wù)器 工作原理
連接池工作原理
評(píng)論