資料庫連線池的主要操作
阿新 • • 發佈:2018-12-29
最近在研究資料庫連線池,要實現這個功能,首先要知道其應用場景,其次是具體的邏輯:
應用場景:
如果使用者不使用連線池,而是每當執行緒需要時建立一個新的連線,那麼使用者的應用程式的資源使用會產生非常大的浪費並且可能會導致高負載下的異常發生。
注意,每個資料庫連線在客戶端和伺服器端都有花銷(記憶體,CPU,上下文切換等等)。每個連線均會對應用程式和伺服器的可用資源帶來一定的限制。不管這些連線是否在做有用的工作,仍將使用這些資源中的相當一部分。
連線池能夠使效能最大化,同時還能將資源利用控制在一定的水平之下,如果超過該水平,應用程式將崩潰而不僅僅是變慢。
資料庫連線池的主要邏輯如下:
(1)建立資料庫連線池物件(伺服器啟動)。
(2)按照事先指定的引數建立初始數量的資料庫連線(即:空閒連線數)。
(3)對於一個數據庫訪問請求,直接從連線池中得到一個連線。如果資料庫連線池物件中沒有空閒的連線,且連線數沒有達到最大(即:最大活躍連線數),建立一個新的資料庫連線。
(4)存取資料庫。
(5)關閉資料庫,釋放所有資料庫連線(此時的關閉資料庫連線,並非真正關閉,而是將其放入空閒佇列中。如實際空閒連線數大於初始空閒連線數則釋放連線)。
(6)釋放資料庫連線池物件(伺服器停止、維護期間,釋放資料庫連線池物件,並釋放所有連線)。