何為資料庫連線池?其工作原理是什麼?

神探狄仁傑發表於2011-09-23

        連線池用於建立和管理資料庫連線的緩衝池技術,緩衝池中的連線可以被任何需要他們的執行緒使用。當一個執行緒需要用JDBC對一個資料庫操作時,將從池中請求一個連線。當這個連線使用完畢後,將返回到連線池中,等待為其他的執行緒服務。

        連線池的主要優點有以下三個方面。

        第一、減少連線建立時間。連線池中的連線是已準備好的、可重複使用的,獲取後可以直接訪問資料庫,因此減少了連線建立的次數和時間。

        第二、簡化的程式設計模式。當使用連線池時,每一個單獨的執行緒能夠像建立一個自己的JDBC連線一樣操作,允許使用者直接使用JDBC程式設計技術。

        第三、控制資源的使用。如果不使用連線池,每次訪問資料庫都需要建立一個連線,這樣系統的穩定性受系統連線需求影響很大,很容易產生資源浪費和高負載異常。連線池能夠使效能最大化,將資源利用控制在一定的水平之下。連線池能控制池中的連線數量,增強了系統在大量使用者應用時的穩定性。

        下面,簡單的闡述下連線池的工作原理。

         連線池技術的核心思想是連線複用,通過建立一個資料庫連線池以及一套連線使用、分配和管理策略,使得該連線池中的連線可以得到高效、安全的複用,避免了資料庫連線頻繁建立、關閉的開銷。

        連線池的工作原理主要由三部分組成,分別為連線池的建立、連線池中連線的使用管理、連線池的關閉。

        第一、連線池的建立。一般在系統初始化時,連線池會根據系統配置建立,並在池中建立了幾個連線物件,以便使用時能從連線池中獲取。連線池中的連線不能隨意建立和關閉,這樣避免了連線隨意建立和關閉造成的系統開銷。Java中提供了很多容器類可以方便的構建連線池,例如Vector、Stack等。

        第二、連線池的管理。連線池管理策略是連線池機制的核心,連線池內連線的分配和釋放對系統的效能有很大的影響。其管理策略是:

        當客戶請求資料庫連線時,首先檢視連線池中是否有空閒連線,如果存在空閒連線,則將連線分配給客戶使用;如果沒有空閒連線,則檢視當前所開的連線數是否已經達到最大連線數,如果沒達到就重新建立一個連線給請求的客戶;如果達到就按設定的最大等待時間進行等待,如果超出最大等待時間,則丟擲異常給客戶。

        當客戶釋放資料庫連線時,先判斷該連線的引用次數是否超過了規定值,如果超過就從連線池中刪除該連線,否則保留為其他客戶服務。

        該策略保證了資料庫連線的有效複用,避免頻繁的建立、釋放連線所帶來的系統資源開銷。

        第三、連線池的關閉。當應用程式退出時,關閉連線池中所有的連線,釋放連線池相關的資源,該過程正好與建立相反。


相關文章