连接池
![本页使用了标题或全文手工转换](http://images.weserv.nl/?url=//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).