问题:什么是SQL Server中的TempDB溢出?
答案:当SQL Server错误地估计对任何运算符返回的行数不足时,它将向SQL Server引擎请求不正确的内存授予量,这将导致执行计划效率低下。如果低效计划的内存分配相对较小,则SQL Server将需要磁盘上的其他空间来完成必要的工作(如连接,排序依据)。当SQL Server在任何查询没有足够的内存来执行其操作时使用TempDB时,称为TempDB Spill。

每当您看到任何带有TempDB Spill的执行计划时,请相信我,您总是有机会改善查询性能。以下是一些一般性建议:
- 通过全面扫描更新统计信息
- 创建覆盖索引
- 使用临时表而不是子查询
- 将大型查询分为多个小型查询
- 重新编写查询以避免参数嗅探
- 还有很多…
您可以通过多种不同的方式来提高查询的性能,但是并不是任何解决方案都能适用于每个查询。
每当我看到TempDB溢出时,我的个人本能就是查看查询,并尝试了解是否可以采取任何措施避免溢出而不更改架构中的任何内容。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




