0

我想在我的 Web 应用程序中实现连接池。请问我该如何实现。

4

2 回答 2

2

我会说你有两个问题:

  • 你不知道你是否需要连接池

  • 如果您发现需要它,您不知道如何实现它。

我最初会假设您不需要它,重用连接是一种(可能为时过早的)优化。

但是,如果您发现您确实需要它,那么您如何做将取决于您的应用程序服务器的性质。

  • 如果您的应用程序是 Apache 的“进程内”,那么除了每个进程(或线程)一个连接之外,您真的别无选择
  • 如果您的应用程序“进程外”,例如通过 mod_jk 连接到 Tomcat,那么您可以在应用程序服务器 (Tomcat) 中执行您喜欢的操作,其中可能包括在适当的情况下跨多个线程使用的池连接。

每次使用新连接的令人信服的原因是:

  • 先前请求留下的旧连接状态不会产生不必要的副作用
  • 您只在需要时进行连接 - 降低数据库连接的风险
  • 可预测的性能 - 您可以衡量请求所花费的时间,包括创建连接

重用连接的唯一令人信服的原因是连接开销时间本身。

一些数据库创建连接的速度相对较慢(Oracle) - 其他数据库要快得多(MySQL)。一些数据库可以调整为在内部保留一个线程池,它们可以重用(MySQL),这使得连接速度更快。

于 2009-08-25T06:36:45.313 回答
0

虽然我没有明确的答案(我也在寻找),但我可以提出以下建议(对于 perl 后端):

  • 如果您使用的是 mod_perl2,请查看 Apache::DBI ( http://metacpan.org/pod/Apache::DBI )。它有一些缺点,在页面上列出。
  • 如果您使用 perl DBI 连接到您的数据库,那么不要使用 connect() 方法调用,而是使用 connect_cached() 方法调用。
于 2009-10-07T15:26:59.237 回答