連接池
外觀
![本頁使用了標題或全文手工轉換](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![]() |
在軟件工程中,連接池(英語:connection pool)是維護的資料庫連接的快取,以便在將來需要對資料庫發出請求時可以重用連接。 連接池用於提高在資料庫上執行命令的效能。為每個用戶打開和維護資料庫連接,尤其是對動態資料庫驅動的網站應用程式發出的請求,既昂貴又浪費資源。在連接池中,建立連接之後,將連接放在池中並再次使用,這樣就不必建立新的連接。如果所有連接都正在使用,則建立一個新連接並將其添加到池中。連接池還減少了用戶必須等待建立與資料庫的連接的時間。
應用
[編輯]基於Web的應用程式和企業級軟件使用應用程式伺服器來處理連接池。沒有連接池的動態網頁根據需要打開到資料庫服務的連接,並在頁面完成服務特定請求時關閉這些連接。另一方面,使用連接池的頁面在池中維護打開的連接。當頁面需要訪問資料庫時,它只需使用來自池的現有連接,並且只有在沒有池連接可用時才建立新連接。這減少了與連接到資料庫以服務單個請求相關的開銷。
需要經常訪問資料庫的本地應用程式也可以受益於連接池。可以在不需要為單獨的遠端請求提供服務的本地應用程式(如應用伺服器)中維護開放的連接,但是連接池的實現可能會變得複雜。許多可用的庫實現了連接池和相關的SQL查詢池,簡化了資料庫密集型應用程式中連接池的實現。
管理員可以通過限制最小連接數、最大連接數和空閒連接數來組態連接池,以最佳化特定問題場景下和特定環境中的池效能。
資料庫支援
[編輯]IBM DB2[1]、Microsoft SQL Server[2]、Oracle[3]、MySQL[4]、PostgreSQL[5]和Neo4j[6]支援連接池。
參見
[編輯]參考文獻
[編輯]- ^ IBM Connection Pooling Support[永久失效連結]
- ^ SQL Server Connection Pooling (ADO.NET). [2020-04-27]. (原始內容存檔於2016-05-14).
- ^ OCI Driver Connection Pooling. [2020-04-27]. (原始內容存檔於2011-11-14).
- ^ MySQL Connection Pooling. [2020-04-27]. (原始內容存檔於2016-03-20).
- ^ PostgreSQL Replication, Clustering and Connection Pooling. [2020-04-27]. (原始內容存檔於2020-04-13).
- ^ 4.2. Client applications - Chapter 4. Drivers. neo4j.com. [2018-02-23]. (原始內容存檔於2018-02-23).