資料庫連接池 本詞條由“科普中國”百科科學詞條編寫與應用工作項目 審核 。 本詞條由“科普中國”百科科學詞條編寫與應用工作項目 審核 。 資料庫連接池負責分配、管理和釋放資料庫連接,它允許應用程式重覆使用一個現有的資料庫連接,而不是再重新建立一個;釋放空閑時間超過最大空閑時間的資料庫連接來避免因為沒 ...
本詞條由“科普中國”百科科學詞條編寫與應用工作項目 審核 。 資料庫連接池負責分配、管理和釋放資料庫連接,它允許應用程式重覆使用一個現有的資料庫連接,而不是再重新建立一個;釋放空閑時間超過最大空閑時間的資料庫連接來避免因為沒有釋放資料庫連接而引起的資料庫連接遺漏。這項技術能明顯提高對資料庫操作的性能。
- 中文名
- 資料庫連接池
- 概 念
- 一種關鍵的有限的昂貴的資源
- 影響因素
- 最大連接數,最小連接數
- 功 能
- 分配、管理和釋放資料庫連接
目錄
背景
資料庫連接是一種關鍵的、有限的、昂貴的資源,這一點在多用戶的網頁應用程式中體現得尤為突出。對資料庫連接的管理能顯著影響到整個應用程式的伸縮性和健壯性,影響到程式的性能指標。資料庫連接池正是針對這個問題提出來的。影響因素
資料庫連接池在初始化時將創建一定數量的資料庫連接放到連接池中,這些資料庫連接的數量是由最小資料庫連接數制約。無論這些資料庫連接是否被使用,連接池都將一直保證至少擁有這麼多的連接數量。連接池的最大資料庫連接數量限定了這個連接池能占有的最大連接數,當應用程式向連接池請求的連接數超過最大連接數量時,這些請求將被加入到等待隊列中。資料庫連接池的最小連接數和最大連接數的設置要考慮到下列幾個因素: 1. 最小連接數 是連接池一直保持的資料庫連接,所以如果應用程式對資料庫連接的使用量不大,將會有大量的資料庫連接資源被浪費。 2. 最大連接數 是連接池能申請的最大連接數,如果資料庫連接請求超過此數,後面的資料庫連接請求將被加入到等待隊列中,這會影響之後的資料庫操作。 3. 最小連接數與最大連接數差距 最小連接數與最大連接數相差太大,那麼最先的連接請求將會獲利,之後超過最小連接數量的連接請求等價於建立一個新的資料庫連接。不過,這些大於最小連接數的資料庫連接在使用完不會馬上被釋放,它將被放到連接池中等待重覆使用或是空閑超時後被釋放。原理
連接池基本的思想是在系統初始化的時候,將資料庫連接作為對象存儲在記憶體中,當用戶需要訪問資料庫時,並非建立一個新的連接,而是從連接池中取出一個已建立的空閑連接對象。使用完畢後,用戶也並非將連接關閉,而是將連接放回連接池中,以供下一個請求訪問使用。而連接的建立、斷開都由連接池自身來管理。同時,還可以通過設置連接池的參數來控制連接池中的初始連接數、連接的上下限數以及每個連接的最大使用次數、最大空閑時間等等。也可以通過其自身的管理機制來監視資料庫連接的數量、使用情況等。[1]Java連接池
在Java中開源的資料庫連接池有以下幾種 : 1、C3P0:是一個開放源代碼的JDBC連接池,它在lib目錄中與Hibernate[2] 一起發佈,包括了實現jdbc3和jdbc2擴展規範說明的Connection 和Statement 池的DataSources 對象。 2、Proxool:是一個Java SQL Driver驅動程式,提供了對選擇的其它類型的驅動程式的連接池封裝。可以非常簡單的移植到現存的代碼中,完全可配置,快速、成熟、健壯。可以透明地為現存的JDBC驅動程式增加連接池功能。 3、Jakarta DBCP:DBCP是一個依賴Jakartacommons-pool對象池機制的資料庫連接池。DBCP可以直接的在應用程式中使用。 4、DDConnectionBroker:是一個簡單、輕量級的資料庫連接池。 5、DBPool:是一個高效、易配置的資料庫連接池。它除了支持連接池應有的功能之外,還包括了一個對象池,使用戶能夠開發一個滿足自己需求的資料庫連接池。 6、XAPool:是一個XA資料庫連接池。它實現了javax.sql.XADataSource並提供了連接池工具。 7、Primrose:是一個Java開發的資料庫連接池。當前支持的容器包括Tomcat4&5、Resin3與JBoss3。它同樣也有一個獨立的版本,可以在應用程式中使用而不必運行在容器中。Primrose通過一個WEB介面來控制SQL處理的追蹤、配置,以及動態池管理。在重負荷的情況下可進行連接請求隊列處理。 8、SmartPool:是一個連接池組件,它模仿應用伺服器對象池的特性。SmartPool能夠解決一些臨界問題如連接泄漏(connection leaks)、連接阻塞、打開的JDBC對象(如Statements、PreparedStatements)等。SmartPool的特性包括:- 支持多個pool
- 自動關閉相關聯的JDBC對象
- 在所設定time-outs之後察覺連接泄漏
- 追蹤連接使用情況
- 強制啟用最近最少用到的連接
- 把SmartPool“包裝”成現存的一個pool
- Oracle的PS Cache記憶體占用優化
- MySql的ping檢測優化
- 參考資料