什么是连接池?

时间:2010-03-02 04:48:58

标签: asp.net connection-pooling

我听过连接池这个术语,并通过谷歌搜索来查找一些参考资料......但是无法理解何时使用它....

  • 我应该何时考虑使用 连接池?

  • 有什么好处和 连接池的缺点?

任何建议....

6 个答案:

答案 0 :(得分:19)

您的想法是不打开和关闭与数据库的单个连接,而是创建一个打开连接的“池”,然后重复使用它们。完成单个线程或过程后,它会将连接放回池中,以便其他线程可以使用它。它背后的想法是,通常你没有超过50个并行连接,并且打开连接是耗费时间和资源的。

答案 1 :(得分:7)

  

我应该何时考虑使用   连接池?

  • 始终用于生产系统。
  

有什么优点和   连接池的缺点?

优点:

  • 效果即可。使用固定的连接池,避免昂贵的连接创建和释放。
  • 共享基础架构。如果您的数据库在多个应用程序之间共享,则您不希望一个应用程序耗尽所有连接。汇集帮助以限制每个应用程序的连接数。
  • <强>许可即可。根据您的数据库许可证,并发客户端的数量是有限的。您可以使用授权连接数设置池。如果没有可用的连接,客户端将等待,直到有一个可用或超时。
  • 连接问题。客户端和数据库之间的连接池可以为客户端透明地提供诸如“ping”测试,连接重试等便利功能。在更糟糕的情况下,有一个超时。
  • 监测即可。您可以监控池,查看活动连接数等。

缺点:

  • 您需要对其进行设置和配置,这通常是花生。

答案 2 :(得分:5)

每当建立连接的时间大于零(几乎总是)并且有足够的平均使用量时,您应该使用连接池,以便在超时之前可能再次使用该连接。

优点是打开/关闭新连接要快得多,因为它们没有真正打开和关闭,它们只是检出/进入池中。

如果所有池连接都在使用中,则在某些连接池中会出现缺陷。这通常是一件好事,因为它表示调用代码没有关闭连接的问题,但是如果您合法地需要比池中更多的连接并且没有正确配置它,那么您可能会在其他情况下得到错误。

当然,根据您正在使用的特定环境和数据库,还有其他优点和缺点。

答案 3 :(得分:0)

连接池可以重用现有但未使用的数据库连接。通过使用它,您可以消除连接/断开连接到数据库服务器的开销。在大多数情况下,它可以显着提升性能。我能想到不使用它的唯一原因是你的软件连接频率不足以保持连接存活或池池中有一些错误。

答案 4 :(得分:0)

在.NET中,如果您使用相同的连接字符串进行数据访问,那么您已经拥有了连接池。该概念是重用空闲连接而不必将其拆除。重新创建它,从而节省服务器资源。 这当然考虑到您在完成工作后关闭了开放式连接。

答案 5 :(得分:0)

如果我们需要多次与数据库通信,那么不建议每次都创建一个单独的Connection对象,因为创建和销毁连接对象会影响性能。

为了克服这个问题,我们应该使用连接池。

如果我们想与数据库通信,那么我们请求一个连接池来提供一个连接。一旦我们获得了连接,通过使用它我们就可以与数据库进行通信。 完成我们的工作后,我们可以将连接对象返回到池中,而不是销毁它。

连接池的主要优点是多次重用同一个连接对象。