數據庫連接池
數據庫連接池負責分配、管理和釋放數據庫連接,它允許應用程序重復使用一個現有的數據庫連接,而不是再重新建立一個;釋放空閑時間超過最大空閑時間的數據庫連接來避免因為沒有釋放數據庫連接而引起的數據庫連接遺漏。這項技術能明顯提高對數據庫操作的性能。數據庫連接是一種關鍵的、有限的、昂貴的資源,這一點在多用戶的網頁應用程序中體現得尤為突出。對數據庫連接的管理能顯著影響到整個應用程序的伸縮性和健壯性,影響到程序的性能指標。數據庫連接池正是針對這個問題提出來的。
數據庫連接池在初始化時將創建一定數量的數據庫連接放到連接池中,這些數據庫連接的數量是由最小數據庫連接數制約。無論這些數據庫連接是否被使用,連接池都將一直保證至少擁有這麽多的連接數量。連接池的最大數據庫連接數連接池最基本的思想就是預先建立一些連接放置於內存對象中以備使用
當程序中需要建立數據庫連接時,只須從內存中取一個來用而不用新建。同樣,使用完畢後,只需放回內存即可。而連接的建立、斷開都有連接池自身來管理。同時,我們還可以通過設置連接池的參數來控制連接池中的連接數、每個連接的最大使用次數等等。通過使用連接池,將大大提高程序效率,同時,我們可以通過其自身的管理機制來監視數據庫連接的數量、使用情況等。下面我們以一個名為ConnectionPool的連接池為例來看看連接池的實現。先看看ConnectionPool的基本屬性:
m_ConnectionPoolSize:連接池中連接數量下限
m_ConnectionPoolMax:連接池中連接數量上限
m_ConnectionUseCount:一個連接的最大使用次數
m_ConnectionTimeout:一個連接的最長空閑時間
m_MaxConnections = -1:同一時間的最大連接數
m_timer:定時器
這些屬性定義了連接池與其中的每個連接的有效狀態值。連接池的自我管理,實際上就是通過定時的對每個連接的狀態、連接的數量進行判斷而進行相應操作。其管理流程如下:
數據庫連接池