【问题标题】:Entity Framework stored procedure over remote connection通过远程连接的实体框架存储过程
【发布时间】:2012-02-27 02:20:53
【问题描述】:

我正在使用 EF 4,但我被另一个怪癖难住了……基本上,我有一个相当简单的存储过程,它负责从 SQL 中检索数据并返回一个复杂的类型。我通过函数导入将存储过程添加到我的模型中。它或多或少在以下结构中。

using (ModelContainer context = GetNewModelContainer())
{
   return context.GetSummary(id, startDate, endDate, type).ToList();
} 

我应该提一下,上面的代码是通过远程 SQL 连接执行的。执行需要将近 10 分钟。但是,通过远程连接使用 SQL Server Management Studio,存储过程几乎可以立即执行。

返回的记录只有100条左右,每条记录大约有30个字段。

当我针对客户数据库的备份在本地(无远程连接)运行上述代码时,它会毫无延迟地执行。

我不知道是什么导致了这种性能下降。 10分钟是不可接受的。我不认为这是存储过程。可能是由于远程连接导致的序列化?关于如何追踪和纠正罪魁祸首的任何想法?

【问题讨论】:

    标签: c# sql sql-server entity-framework entity-framework-4


    【解决方案1】:

    您所描述的症状通常与缓存不正确的查询计划相关(由于参数嗅探)。

    确保您的统计数据是最新的,如果索引是零散的,则重建索引。

    规范参考是:Slow in the Application, Fast in SSMS?绝对必要的阅读。

    可能有用的 SO 链接:

    【讨论】:

    • 感谢您的参考。我有一种感觉,它是沿着这些方向发展的。我将花一些时间阅读上面的链接。我会跟进我的发现。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    相关资源
    最近更新 更多