当前正在SQL Server 2008 R2上运行

我试图提高UPDATE语句的性能。我注意到弹出的计划中有一个渴望假脱机操作。我对假脱机操作的理解非常基础-他们在更新期间为表创建了临时存储。

我还知道,尽管它们可以防止执行时间大大缩短,但热切的假脱机通常表明存在潜在的问题表结构和/或查询语句。

我的问题很简单:当您在查询计划中看到一个急切假脱机时,您首先要解决什么问题?

我将分析系统的每个部分以提高性能-我只是在寻找应该从哪里开始的指南。

评论

你能显示计划吗?线轴可能意味着很多不同的东西。

还有另外一些情况可能会出现在UPDATE中:表具有自引用外键或访问进行数据访问或未受模式绑定的UDF

#1 楼


我试图提高UPDATE语句的性能。我注意到在显示计划中弹出了一个Eager Spool操作。


出于各种原因,可能添加了Eager Spools,包括万圣节保护,或在维护非聚集索引时优化I / O。 。

在没有看到执行计划的情况下(甚至看不到执行计划),很难确定在您的特定情况下哪种情况可能适用。如果需要考虑数据敏感性,请考虑使用SentryOne Plan Explorer上传计划的匿名版本进行分析。

很可能Eager Spool并不是您应该关注的事情;许多因素会影响更改数据的查询的实际性能。如果您根据Eager Spool操作员显示的估算百分比成本进行调整,请考虑使用与特定硬件配置功能不匹配的模型生成这些估算值。

#2 楼

有时,当其他阻塞操作员就位时,可以避免急切的线轴-例如排序。因此,最好确保在到达该阶段之前已对数据进行排序。 (也许缺少索引?)

如果要保护万圣节,那么就像其他人所说的那样,您无能为力。