第一章(2)——预估和实际执行计划
2013-06-28 14:35
288 查看
正如前面提到的,有两种不同类型的执行计划,第一种,就是优化器的输出结果,成为预估执行计划,里面的操作符或者步骤都是逻辑步骤,因为他们代表着执行计划在优化器中的视图,但是并不表现在实际执行中物理层面的发生。
另外一种计划是表示查询实际执行的输出结果。这种类型叫做实际执行计划,表示查询在实际执行时发生的事情。
这两个计划显示独立的不同的结果集,但是可以看出有巨大的相同之处。大部分情况下,相同的开销的相同的操作符会出现在两种执行计划中。但是当发生重编译,SQLServer会删除计划缓存中的计划并重建它,此时两者就会有明显的差异。这种情况通常发生于统计信息的更改,或存储引擎在处理查询时发生的其他事情。我们将在这章的后面部分更详细地说明。
预估执行计划(后面简称预估计划)是存放在计划缓存中的计划,所以我们对于实际执行计划,只能通过捕捉查询运行的时候产生的执行计划。预估计划从不直接访问数据,但是它对大型的、复杂的、可能运行很久的查询分析相当有效。但是实际计划是首选的,因为它能显示很多运行过程中重要的统计信息如特定操作符实际访问的行数。通常情况下,这种额外的信息使得实际计划成为你最常用的方式,但是预估计划机器重要,特别是因为你可以从计划缓存中获取。
另外一种计划是表示查询实际执行的输出结果。这种类型叫做实际执行计划,表示查询在实际执行时发生的事情。
这两个计划显示独立的不同的结果集,但是可以看出有巨大的相同之处。大部分情况下,相同的开销的相同的操作符会出现在两种执行计划中。但是当发生重编译,SQLServer会删除计划缓存中的计划并重建它,此时两者就会有明显的差异。这种情况通常发生于统计信息的更改,或存储引擎在处理查询时发生的其他事情。我们将在这章的后面部分更详细地说明。
预估执行计划(后面简称预估计划)是存放在计划缓存中的计划,所以我们对于实际执行计划,只能通过捕捉查询运行的时候产生的执行计划。预估计划从不直接访问数据,但是它对大型的、复杂的、可能运行很久的查询分析相当有效。但是实际计划是首选的,因为它能显示很多运行过程中重要的统计信息如特定操作符实际访问的行数。通常情况下,这种额外的信息使得实际计划成为你最常用的方式,但是预估计划机器重要,特别是因为你可以从计划缓存中获取。
相关文章推荐
- 第一章(2)——预估和实际执行计划
- 第一章(2)——预估和实际执行计划
- 第一章(2)——预估和实际执行计划
- ORACLE实际执行计划与预估执行计划不一致性能优化案例
- 第一章:执行计划基本知识--范例入门
- Oracle ->> Oracle下查看实际执行计划的方法
- 第一章:执行计划基本知识--文本执行计划和XML执行计划
- SQL Server 执行计划利用统计信息对数据行的预估原理以及SQL Server 2014中预估策略的改变
- 第一章:执行计划基本知识--文本执行计划和XML执行计划
- 第一章(3)——执行计划重用
- SQL Server实际执行计划COST"欺骗"案例
- 第一章(3)——执行计划重用
- SQL Server 2005执行计划和实际计划命令
- 第一章(3)——执行计划重用
- Oracle如何查看SQL实际执行计划
- oracle执行计划中的cost,time与实际执行时间
- 没有直方图的执行计划预估结果集行数计算公式
- SQL Server 执行计划利用统计信息对数据行的预估原理二(为什么复合索引列顺序会影响到执行计划对数据行的预估)
- 格式化v$sql_plan查看实际执行计划
- 第一章:执行计划基本知识--范例入门