【发布时间】:2016-03-15 19:18:31
【问题描述】:
我最近注意到,当我们的应用程序对 Oracle 数据库执行 SQL 查询时,它总是至少需要 200 毫秒才能执行。不管查询的简单或复杂,最短时间约为 200 毫秒。我们正在使用适用于 Oracle 11g 的 Oracle Managed Data Access 驱动程序。
然后我创建了一个简单的控制台应用程序来测试连接。我注意到,如果我像下面的示例一样创建连接,那么每个 cmd.ExecuteReader 方法需要额外的 200 毫秒(打开连接)?
using (OracleConnection con = new OracleConnection(connStr))
{
con.Open();
OracleCommand cmd = con.CreateCommand();
...
}
这样创建连接时,连接状态始终为Closed(如果连接被池化,不应该是打开的吗?)。
如果我在程序开始时打开连接,然后将打开的连接传递给方法,cmd.ExecuteReader 大约需要 0-5 毫秒才能返回。我尝试将Pooling=true 添加到连接字符串,但它似乎没有做任何事情(无论如何它应该是默认值)。
这是否意味着连接池不能正常工作?或者是否还有其他原因导致cmd.ExecuteReader 需要额外的 200 毫秒来执行?
问题和本期差不多,只不过我们用的是OracleConnection pooling is slower than keeping one connection open
【问题讨论】:
标签: c# .net oracle oracle11g connection-pooling