連接池工作原理
連接池技術的核心思想是連接復用,通過建立一個數(shù)據(jù)庫連接池以及一套連接使用、分配和管理策略,使得該連接池中的連接可以得到高效、安全的復用,避免了數(shù)據(jù)庫連接頻繁建立、關閉的開銷。
連接池的工作原理主要由三部分組成,分別為連接池的建立、連接池中連接的使用管理、連接池的關閉。
第一、連接池的建立
一般在系統(tǒng)初始化時,連接池會根據(jù)系統(tǒng)配置建立,并在池中創(chuàng)建了幾個連接對象,以便使用時能從連接池中獲取。連接池中的連接不能隨意創(chuàng)建和關閉,這樣避免了連接隨意建立和關閉造成的系統(tǒng)開銷。Java中提供了很多容器類可以方便的構建連接池,例如Vector、Stack等。
第二、連接池的管理
連接池管理策略是連接池機制的核心,連接池內連接的分配和釋放對系統(tǒng)的性能有很大的影響。其管理策略是:
當客戶請求數(shù)據(jù)庫連接時,首先查看連接池中是否有空閑連接,如果存在空閑連接,則將連接分配給客戶使用;如果沒有空閑連接,則查看當前所開的連接數(shù)是否已經(jīng)達到最大連接數(shù),如果沒達到就重新創(chuàng)建一個連接給請求的客戶;如果達到就按設定的最大等待時間進行等待,如果超出最大等待時間,則拋出異常給客戶。當客戶釋放數(shù)據(jù)庫連接時,先判斷該連接的引用次數(shù)是否超過了規(guī)定值,如果超過就從連接池中刪除該連接,否則保留為其他客戶服務。
該策略保證了數(shù)據(jù)庫連接的有效復用,避免頻繁的建立、釋放連接所帶來的系統(tǒng)資源開銷。
第三、連接池的關閉
當應用程序退出時,關閉連接池中所有的連接,釋放連接池相關的資源,該過程正好與創(chuàng)建相反。
連接池的運作原理
在實際應用開發(fā)中,特別是在WEB應用系統(tǒng)中,如果JSP、Servlet或EJB使用JDBC直接訪問數(shù)據(jù)庫中的數(shù)據(jù),每一次數(shù)據(jù)訪問請求都必須經(jīng)歷建立數(shù)據(jù)庫連接、打開數(shù)據(jù)庫、存取數(shù)據(jù)和關閉數(shù)據(jù)庫連接等步驟,而連接并打開數(shù)據(jù)庫是一件既消耗資源又費時的工作,如果頻繁發(fā)生這種數(shù)據(jù)庫操作,系統(tǒng)的性能必然會急劇下降,甚至會導致系統(tǒng)崩潰。數(shù)據(jù)庫連接池技術是解決這個問題最常用的方法,在許多應用程序服務器(例如:Weblogic,WebSphere,JBoss)中,基本都提供了這項技術,無需自己編程,但是,深入了解這項技術是非常必要的。
數(shù)據(jù)庫連接池技術的思想非常簡單,將數(shù)據(jù)庫連接作為對象存儲在一個Vector對象中,一旦數(shù)據(jù)庫連接建立后,不同的數(shù)據(jù)庫訪問請求就可以共享這些連接,這樣,通過復用這些已經(jīng)建立的數(shù)據(jù)庫連接,可以克服上述缺點,極大地節(jié)省系統(tǒng)資源和時間。
數(shù)據(jù)庫連接池的主要操作如下:
(1)建立數(shù)據(jù)庫連接池對象(服務器啟動)。
(2)按照事先指定的參數(shù)創(chuàng)建初始數(shù)量的數(shù)據(jù)庫連接(即:空閑連接數(shù))。
(3)對于一個數(shù)據(jù)庫訪問請求,直接從連接池中得到一個連接。如果數(shù)據(jù)庫連接池對象中沒有空閑的連接,且連接數(shù)沒有達到最大(即:最大活躍連接數(shù)),創(chuàng)建一個新的數(shù)據(jù)庫連接。
(4)存取數(shù)據(jù)庫。
(5)關閉數(shù)據(jù)庫,釋放所有數(shù)據(jù)庫連接(此時的關閉數(shù)據(jù)庫連接,并非真正關閉,而是將其放入空閑隊列中。如實際空閑連接數(shù)大于初始空閑連接數(shù)則釋放連接)。
(6)釋放數(shù)據(jù)庫連接池對象(服務器停止、維護期間,釋放數(shù)據(jù)庫連接池對象,并釋放所有連接)。
-
數(shù)據(jù)庫
+關注
關注
7文章
3851瀏覽量
64698
發(fā)布評論請先 登錄
相關推薦
燃料電池測試負載的工作原理是什么?
輔助電源的工作原理
MQTT協(xié)議網(wǎng)關的工作原理及功能特性
![MQTT協(xié)議網(wǎng)關的<b class='flag-5'>工作原理</b>及功能特性](https://file1.elecfans.com//web2/M00/07/B1/wKgaombqlp6ARrPnAADgy2-cZI8853.jpg)
串行接口的工作原理和結構
VCO的工作原理是什么
神經(jīng)網(wǎng)絡中的卷積層、池化層與全連接層
使用mybatis切片實現(xiàn)數(shù)據(jù)權限控制
![使用mybatis切片實現(xiàn)數(shù)據(jù)權限控制](https://file1.elecfans.com//web2/M00/F9/D3/wKgZomaLyPGADDxAAAEr4RL-Yl0024.png)
評論