var*_*ble 7 sql-server execution-plan plan-cache sql-server-2019
当执行查询时,SQL Server将产生一个查询计划列表,并启发式地选择成本较低的计划。
所选择的计划将存储在计划缓存中,以供后续看到相同查询时使用。
当表的某些属性发生变化或者重建索引时,它会再次产生一个查询计划列表,并启发式地选择一个成本较低的查询计划,并将其存储在计划缓存中。
但是,MSDN 似乎表明估计计划存储在计划缓存中,请参见下面的屏幕截图。那是对的吗?
Pau*_*ite 14
是的,这是正确的,尽管所使用的术语并不完美。
术语“估计”和“实际”是区分没有运行时统计信息的计划(“估计”)和还包括来自特定执行的统计信息的计划(“实际”)的便捷方法。
缓存的计划不包括任何特定执行的运行时统计信息,因此它是“估计的”。
查询存储还保存“估计”计划,但也单独记录一些运行时信息。
仅供参考,我想将其添加到伟大的保罗的答案中。
这是关于执行计划的微软文档:
正如你所看到的,它是这样说的:
- 估计执行计划是编译后的计划,由查询优化器根据估计生成。这是存储在计划缓存中的查询计划。
- 实际执行计划是编译的计划及其执行上下文。它在查询执行完成后变得可用。这包括实际的运行时信息,例如执行警告,或者在较新版本的数据库引擎中,包括执行期间已用时间和使用的 CPU 时间。
- 实时查询统计信息是已编译的计划及其执行上下文。它可用于正在进行的查询执行,并每秒更新一次。这包括运行时信息,例如流经运算符的实际行数、经过的时间和估计的查询进度。
在查询存储中,您还可以找到估计的执行计划和查询统计信息。
归档时间: |
|
查看次数: |
1344 次 |
最近记录: |