【发布时间】:2013-08-14 15:17:34
【问题描述】:
我在我的 ASP.NET 应用程序中使用 nHibernate 对存储过程进行了 SQL 调用:
GetNamedQuery("MyProc")
.SetString("param1", value1)
.SetString("param2", value2)
...
此处使用的 SQL Server 2005。它在我们的测试环境中运行良好,这个调用大约需要 2 秒才能完成。但是当我们将它移动到新服务器时,它开始需要很长时间,并且我的应用程序中出现超时异常。
但是,我在 SQL Server Profiler 中捕获调用,发现此调用运行了 30 秒。但是当我复制相同的查询并在服务器上运行它时,它会在 2 秒内完成。
那么问题是什么会影响来自 .NET 应用程序的工作查询?
【问题讨论】:
-
你能发布你存储的过程代码吗?
-
它是否缓存了执行计划,如果是,它在编译/缓存后是否会加速? - 将有助于查看所有调用代码方法和存储过程代码。
-
你有没有调查过任何怀疑 nHibernate 方法/使用效率低下的地方?
-
其他服务器是否比测试环境有更多的数据或更多的流量?
标签: sql sql-server nhibernate timeoutexception