ODP.NET连接汇集为单一连接?

时间:2013-12-11 06:07:01

标签: c# .net oracle

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

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

有没有办法可以为大多数目的启用池,但是为特定的连接对象禁用它?或者它会更容易(因为我们已经有代码基本上“汇集”关键查询的两个连接)只是扩展现有代码以通过一般查询的一小部分连接对象旋转,并保持两个其他连接分开对于更关键的查询?

1 个答案:

答案 0 :(得分:1)

在链接到here的@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包的一部分进行了调查。