gpt4 book ai didi

存储过程和 Entity Framework 的性能

转载 作者:行者123 更新时间:2023-12-04 03:11:01 26 4
gpt4 key购买 nike

通过我的实体模型调用存储过程会导致性能比直接调用慢得多,有什么明显的原因吗?

首先,我不希望 SP 以完全相同的速度运行,而且我知道 EF 必须执行的各种操作在直接访问 SP 时不会被调用.

除此之外,我有一个返回三列字符串的查询。当我通过企业管理器执行它时,它几乎立即运行。如果我通过 EF 运行它,则大约需要六秒钟。诚然,结果被映射到一个复杂的类型,但是当我通过 SQL Server Profiler 运行查询时,可以清楚地看到延迟发生在 SQL 服务器上:

Performance of query being executed from two sources in SQL Server Profiler

在图中,1 表示从 Enterprise Manager 调用的 SQL,2 表示它是通过我的应用程序使用 EF 调用的。

这里有什么明显的错误吗?我预计可能会有一两秒的延迟,但差异似乎太大了。

编辑:

通过 ADO.Net 调用时,存储过程似乎也运行缓慢。我的同事似乎认为这与 .Net 缓存的错误执行计划有关。通过编辑存储过程并再次保存,它似乎清除了缓存中的所有内容,并且 ADO.Net 和 EF 对存储过程的调用都运行良好。

有没有人遇到过这样的事情?

最佳答案

看看this thread on SQL Server forum .它有点相似,可能会提供一些线索。简而言之,您可能在 SSMS 和 ADO.NET 中有不同的 SQL Server 执行环境选项,从而导致不同的执行计划。清除 SQL Server 计划缓存应该有所帮助。

关于存储过程和 Entity Framework 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10208921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com