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