資料庫連線池負責分配、管理和釋放資料庫連線,它允許應用程式重複使用乙個現有的資料庫連線,而不是再重新建立乙個;釋放空閒時間超過最大空閒時間的資料庫連線來避免因為沒有釋放資料庫連線而引起的資料庫連線遺漏。這項技術能明顯提高對資料庫操作的效能。資料庫連線是一種關鍵的、有限的、昂貴的資源,這一點在多使用者的網頁應用程式中體現得尤為突出。對資料庫連線的管理能顯著影響到整個應用程式的伸縮性和健壯性,影響到程式的效能指標。資料庫連線池正是針對這個問題提出來的。
資料庫連線池在初始化時將建立一定數量的資料庫連線放到連線池中,這些資料庫連線的數量是由最小資料庫連線數制約。無論這些資料庫連線是否被使用,連線池都將一直保證至少擁有這麼多的連線數量。連線池的最大資料庫連線數量限定了這個連線池能占有的最大連線數,當應用程式向連線池請求的連線數超過最大連線數量時,這些請求將被加入到等待佇列中。資料庫連線池的最小連線數和最大連線數的設定要考慮到下列幾個因素:
1. 最小連線數
是連線池一直保持的資料庫連線,所以如果應用程式對資料庫連線的使用量不大,將會有大量的資料庫連線資源被浪費。
2. 最大連線數
是連線池能申請的最大連線數,如果資料庫連線請求超過此數,後面的資料庫連線請求將被加入到等待佇列中,這會影響之後的資料庫操作。
3. 最小連線數與最大連線數差距
最小連線數與最大連線數相差太大,那麼最先的連線請求將會獲利,之後超過最小連線數量的連線請求等價於建立乙個新的資料庫連線。不過,這些大於最小連線數的資料庫連線在使用完不會馬上被釋放,它將被放到連線池中等待重複使用或是空閒超時後被釋放。
連線池基本的思想是在系統初始化
的時候,將資料庫連線作為物件儲存在記憶體中,當使用者需要訪問資料庫時,並非建立乙個新的連線,而是從連線池中取出乙個已建立的空閒連線物件。使用完畢後,使用者也並非將連線關閉,而是將連線放回連線池中,以供下乙個請求訪問使用。而連線的建立、斷開都由連線池自身來管理。同時,還可以通過設定連線池的引數來控制連線池中的初始連線數、連線的上下限數以及每個連線的最大使用次數、最大空閒時間等等。也可以通過其自身的管理機制來監視資料庫連線的數量、使用情況等。[
連線池最基本的思想就是預先建立一些連線放置於記憶體物件中以備使用
當程式中需要建立資料庫連線時,只須從記憶體中取乙個來用而不用新建。同樣,使用完畢後,只需放回記憶體即可。而連線的建立、斷開都有連線池自身來管理。同時,我們還可以通過設定連線池的引數來控制連線池中的連線數、每個連線的最大使用次數等等。通過使用連線池,將大大提高程式效率,同時,我們可以通過其自身的管理機制來監視資料庫連線的數量、使用情況等。下面我們以乙個名為connectionpool的連線池為例來看看連線池的實現。先看看connectionpool的基本屬性:
m_connectionpoolsize:連線池中連線數量下限
m_connectionpoolmax:連線池中連線數量上限
m_connectionusecount:乙個連線的最大使用次數
m_connectiontimeout:乙個連線的最長空閒時間
m_maxconnections = -1:同一時間的最大連線數
m_timer:定時器
這些屬性定義了連線池與其中的每個連線的有效狀態值。連線池的自我管理,實際上就是通過定時的對每個連線的狀態、連線的數量進行判斷而進行相應操作。其管理流程如下:
資料庫連線池 Redis連線池
基本原理 在內部物件池中,維護一定數量的資料庫連線,並對外暴露資料庫連線的獲取和返回方法。如外部使用者可通過getconnection方法獲取資料庫連線,使用完畢後再通過releaseconnection方法將連線返回,注意此時的連線並沒有關閉,而是由連線池管理器 並為下一次使用做好準備。2.作用 ...
資料庫連線池
實現資料連線池,讓系統有更高有執行效率 using system using system.data using system.data.sqlclient using system.collections using system.threading public class dataaccess...
資料庫連線池
資料庫連線池概述 資料庫連線是一種關鍵的有限的昂貴的資源,這一點在多使用者的網頁應用程式中體現得尤為突出。對資料庫連線的管理能顯著影響到整個應用程式的伸縮性和健壯性,影響到程式的效能指標。資料庫連線池正是針對這個問題提出來的。資料庫連線池負責分配 管理和釋放資料庫連線,它允許應用程式重複使用乙個現有...