软件工程中,连接池(英语: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).