軟件工程中,連接池(英語:connection pool)是維護的數據庫連接的緩存,以便在將來需要對數據庫發出請求時可以重用連接。 連接池用於提高在數據庫上執行命令的性能。為每個用戶打開和維護數據庫連接,尤其是對動態數據庫驅動的網站應用程序發出的請求,既昂貴又浪費資源。在連接池中,創建連接之後,將連接放在池中並再次使用,這樣就不必建立新的連接。如果所有連接都正在使用,則創建一個新連接並將其添加到池中。連接池還減少了用戶必須等待建立與數據庫的連接的時間。

應用

編輯

基於Web的應用程序和企業級軟件使用應用程式伺服器來處理連接池。沒有連接池的動態網頁根據需要打開到數據庫服務的連接,並在頁面完成服務特定請求時關閉這些連接。另一方面,使用連接池的頁面在池中維護打開的連接。當頁面需要訪問數據庫時,它只需使用來自池的現有連接,並且只有在沒有池連接可用時才建立新連接。這減少了與連接到數據庫以服務單個請求相關的開銷。

需要經常訪問數據庫的本地應用程序也可以受益於連接池。可以在不需要為單獨的遠程請求提供服務的本地應用程序(如應用服務器)中維護開放的連接,但是連接池的實現可能會變得複雜。許多可用的實現了連接池和相關的SQL查詢池,簡化了數據庫密集型應用程序中連接池的實現。

管理員可以通過限制最小連接數、最大連接數和空閒連接數來配置連接池,以優化特定問題場景下和特定環境中的池性能。

數據庫支持

編輯

IBM DB2[1]Microsoft SQL Server[2]Oracle[3]MySQL[4]PostgreSQL[5]Neo4j英語Neo4j[6]支持連接池。

參見

編輯

參考文獻

編輯
  1. ^ IBM Connection Pooling Support[永久失效連結]
  2. ^ SQL Server Connection Pooling (ADO.NET). [2020-04-27]. (原始內容存檔於2016-05-14). 
  3. ^ OCI Driver Connection Pooling. [2020-04-27]. (原始內容存檔於2011-11-14). 
  4. ^ MySQL Connection Pooling. [2020-04-27]. (原始內容存檔於2016-03-20). 
  5. ^ PostgreSQL Replication, Clustering and Connection Pooling. [2020-04-27]. (原始內容存檔於2020-04-13). 
  6. ^ 4.2. Client applications - Chapter 4. Drivers. neo4j.com. [2018-02-23]. (原始內容存檔於2018-02-23).