ODP.NET连接池为单个连接关闭

本文关键字:连接 单个 NET ODP | 更新日期: 2024-09-08 11:25:49

使用Oracle的ODP。NET库,我正在开发的应用程序需要执行两种不同类型的查询,其中一种类型可能相对较慢,但另一种必须较快。我继承的当前应用程序代码完全禁用了连接池,并为"快速"查询保持特定连接对象的打开状态,这非常适合此目的,因为如果第一次调用的时间超过X毫秒,我们可以切换到另一个打开的连接,并提醒用户,如果第二次调用的返回速度不够快,数据返回的速度不够快。

同时,在更改了连接字符串以启用池后,我们运行的常规查询会更快地返回,因此最好对这些查询使用池。

有没有一种方法可以为大多数目的启用池,但为特定的连接对象禁用池?还是更容易(因为我们已经有了代码,基本上为关键查询"池化"了两个连接),只需扩展现有代码,使其在普通查询的连接对象的小集合中循环,并为更关键的查询保留另外两个连接?

ODP.NET连接池为单个连接关闭

在@Mino链接到这里的文章中,它指出:

如果任何一个连接字符串参数被修改,ODP。NET将在请求下一个连接时为您的应用程序创建一个新的连接池。

根据Visual Studio调试器和反汇编工具JustDecompile的信息扩展并澄清了该语句,我相信:

  • 当前ODP。NET连接器在连接字符串中的任何内容发生变化时都会创建一个新的连接池,甚至可以扩展到在字符串的不重要部分添加或删除空白
  • 在关闭池的情况下创建的任何连接都不使用连接池,即使存在该服务器的池也是如此
  • 并且,任何打开的使用连接字符串的新连接都将继续使用旧池

Oracle的连接池确实足够聪明,可以满足我的需求。所有这些都与Oracle进行了调查。ManagedDataAccess.dll v4.121.1.0作为Oracle.com的ODAC 12.1.0.1.0 with Oracle Developer Tools for Visual Studio软件包的一部分。