关闭或不关闭Oracle连接?

Ewe*_*ton 5 oracle connection connection-string connection-pooling odp.net

我的应用程序存在性能问题,因此我开始从根目录进行调查:"与数据库的连接".

最佳实践说:"打开连接,使用它并尽快关闭",但我不知道这导致的开销,所以问题是:

1 - 使用ODP.NET"尽快打开,使用,关闭连接是最好的方法吗?"

2 - 有没有办法和如何使用ODP.NET连接池?我想创建一个List来存储一些连接字符串,并创建一个逻辑,以便在每次需要时选择"最佳"连接.这是最好的方法吗?

Chr*_*hay 6

这是一个包含Oracle推荐的最佳实践的幻灯片:

http://www.oracle.com/technetwork/topics/dotnet/ow2011-bp-performance-deploy-dotnet-518050.pdf

创建OracleConnection时自动获取连接池.对于大多数中间层应用程序,您将希望利用它.您还需要通过启用注册表中的性能计数器来调整池以获得实际工作负载.

有关连接池的详细信息,请参阅ODP.NET联机帮助.池设置将添加到连接字符串.

人们在OracleConnections中遇到的另一个问题是,垃圾收集器没有意识到它们是如何真正占用资源,并且不会及时清理它们.ODP.NET没有完全管理,因此从垃圾收集器中隐藏了一些资源,这使事情更加复杂.因此,最佳做法是关闭()和Dispose()所有Oracle ODP.NET对象(包括OracleConnection)以强制清除它们.

这个特殊问题将在Oracle的完全托管服务提供商中得到缓解(不久将推出测试版)

(编辑:ODP.NET,托管驱动程序现已推出.)

Christian Shay

神谕