軟件工程中,連接池(英語: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).