连接池(Connection pooling)是对查询数据库的用户的连接进行管理的术语,虽然很多用户可能没有注意到,但是当有大量用户在请求访问数据库所在的应用服务器时,在这些时候,服务器几乎不可能保持与所有连接的良好连接。支持连接...
连接池(Connection pooling)是对查询数据库的用户的连接进行管理的术语,虽然很多用户可能没有注意到,但是当有大量用户在请求访问数据库所在的应用服务器时,在这些时候,服务器几乎不可能保持与所有连接的良好连接。支持连接池的软件工程使服务器能够很好地管理连接,而不管进行查询的连接数量有多大,并且能够响应这些连接以次秒的速度进行查询。

连接池是对查询数据库的用户的连接进行管理的术语连接必须具有相同的配置才能包含在连接池中,因此大多数服务器连接池程序都会同时运行不同的连接池。当用户试图连接时,如果空间可用,则会将其分配到具有类似配置的池中。如果没有可用空间,请求一出现就排队等待分配。用户可能不知道他或她在队列中,但可能只是注意到数据库在查询响应方面似乎很慢;但是在数据库管理系统的后台,对池进行扫描,以便为用户查找打开的连接找到空间。大多数连接池程序都有一组列表,列出每个池的最大用户数和最短时间设置,在断开连接并将可用性返回池之前,连接可以保持非活动状态创建连接池时,会创建一定数量的连接对象并将其添加到池中。要使池被视为活动的,它需要最少数量的对象。这些连接对象是将连接绑定到池的可用性席位,它们可以根据需要创建并添加到池中,直到池中允许的最大值。当用户对其查询满意并放弃连接对象时,连接池程序将这些对象返回到池中,供其他用户或同一用户返回时使用在连接池中,可能会减慢响应时间的一个因素是所谓的池碎片化。池碎片通常是由于集成的安全性或驻留在一组现有服务器上的数据库太多而导致的对用户进行身份验证,然后将其排队或分配给现有的连接池对象会消耗内存,更严格的访问系统设计通常可以解决数据库过多的问题。在许多连接池程序中,基于Windows的程序的集成安全系统设计要求一次只能有一个基于Windows的用户驻留在一个池中。这可以通过创建更多的池来解决,以容纳更多的请求需要并发应答。如果连接池程序检测到某个用户的空闲时间超过了设定的时间段或连接已断开,它将把连接对象作为无效对象返回到池中如果服务器在连接生效时关闭,即使连接池不知道断开的连接,连接仍可以撤消。ActiveX连接池程序通常会在服务器重新启动时继续清除这些连接池。