8

我正在开发一种高负载 Web 服务,它可以提供尽可能快的响应。该服务应保持与各种数据库的大量连接,以获得更快的性能。我建议为此使用连接池。数据库可能存在连接问题,因为我们有很多通过 VPN 对数据库的远程访问。正如我所说,服务应该尽可能长时间地保持连接。

什么是连接池管理算法?

我有一个连接字符串:代码:

User Id=inet;Password=somePassw0rd;Data Source=TEST11;Min Pool Size=5;Max Pool Size=15;Pooling=True

然后我只需在我的代码中打开和关闭连接。就是这样。

此刻一切正常。DB端有五个会话。所以我会终止一个会话来模拟连接问题。在某些情况下,连接将由池管理器恢复,而在某些情况下则不会。

如果我杀死所有五个连接,它们将永远不会恢复。

如何配置池管理器?检查数据库连接之间的持续时间有任何设置吗?

我使用validate connection=true;它似乎对我来说工作正常,但如果需要重新连接到数据库,它需要一些努力,因此拥有一个已经很好的连接会更有效率。

我使用的组件是devArt dotConnect for Oracle。提前致谢!

4

1 回答 1

14

我不确定您到底在看什么,但这可能很有用:如果连接空闲一段时间或被服务器关闭,池会自动清除。但是,您可以强制清除池,使用 OracleConnection 的ClearPoolClearAllPools方法(这些方法通常存在于大多数 ADO.NET 提供程序中,也不是必需的)。

请注意,如果您使用的是 Oracle 11g,DotConnect 还支持 Oracle 的数据库驻留连接池 (DRCP),这可能是进行池的最佳方式,因为它是由 Oracle 本身提供的(尽管我对此没有任何经验)。

于 2011-10-10T05:51:27.513 回答