连接池管理

8

我正在开发一个高负载的网络服务,需要尽可能快地提供响应。该服务应该保持多个连接到不同的数据库以提高性能。我建议使用连接池来实现。由于我们通过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
谢谢!

8
我重新组织了你的句子,因为它们很不清楚。你需要花些心思清晰地写出你的问题,而不是一团词汇,同时要体谅读者,使问题易于理解和全面。 - Blessed Geek
1
非常感谢您编辑我的问题!我的英语不如您的好 :) - kseen
1
内置的连接池不能与Oracle一起使用吗?它可以轻松地与SQL Server一起使用,无需任何努力。 - Adam Ralph
是的,它可以与Oracle一起使用,但在我的帖子中我描述了一些问题。最重要的是我如何控制连接池管理器的行为。 - kseen
@jgauffin,你认为始终保持打开的正确连接比每次验证连接或者在用户需要响应时重新打开数据库连接更有利于性能吗?也许我对这个东西的了解不够深入。 - kseen
显示剩余5条评论
1个回答

14
我不确定您具体需要什么,但以下内容可能有用:如果连接闲置一段时间或被服务器关闭,则池会自动清除。但是,您可以使用OracleConnection的ClearPoolClearAllPools方法强制清除池(这些方法通常存在于大多数ADO.NET提供程序中,但这不是必需的)。
请注意,如果您使用的是Oracle 11g,则DotConnect还支持Oracle的Database Resident Connection Pooling (DRCP),这可能是执行池化的最佳方式,因为它由Oracle本身提供(尽管我没有任何相关经验)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接