sqlserver2005:T-Sql查询之物理查询优化(二)
时间:2010-09-05 来源:笑清风
一、查询优化工具
1.Syscacheobjects
Sql Server2000提供了一个虚拟的系统表master.dbo.syscacheobjects 它包含被缓存的执行计划的信息。Sql Server2005提供了一个兼容的视图sys.syscacheobjects,还有一个新的DMV和两个DMF以替换遗留的系统表和兼容性视图即:sys.dm_exec_cached_plans(对象包含已缓存的查询计划的信息)、sys.dm_exec_plan_attributes(接受一个计划的句柄作为输入、为该计划的每个属性返回一行)和sys.dm_exec_sql_text(接受一个查询句柄作为输入,返回查询文本)。
2.清空缓存
从缓存中清空所有的数据
DBCC DROPCLEANBUFFERS
从缓存中清空执行计划
DBCC FREEPROCCACHE
清空特定数据库的执行计划(不推荐使用)
DBCC FLUSHPROCINDB<db_id>
3.动态管理对象
4.STATISTICS IO---是一个会话选项Scan count(该表在该计划中被访问的次数)、logical reads(从缓存读取的页数)、physical reads/read-ahead reads(从磁盘读取的页数);lob logical reads/lob physical reads /lob read-ahead reads(与大型对象相关的逻辑读取和物理读取数)
5.测量查询的运行时间
STATISTICS TIME是一个会话选项,它返回与运行语句有关的纯CPU时间和实耗时间信息,它返回分析和编译查询的时间以及执行查询的时间。
6.分析执行计划
图形化的执行计划
运算符提示框:
1).运算符的名称及其功能描述;
2).Physical Operation:将在引擎上发生的物理操作;
3).Logical Opertation:基于微软查询处理概念模型的逻辑操作。例如,链接运算符的Physical Operation属性表示链接算法(Nested Loops、Merge、Hash),Logical Operation属性表示逻辑链接类型(Inner Join、Outer Join、Semi Join等等)。如果没有与该运算符关联的逻辑操作,则这项度量的值与Physical Operation相同。
4).Actual Number Of Rows:从该运算符实际返回的行数(只显示在实际的计划中)。
5).Estimated I/O Cost和Estimated CPU Cost:运算符在特定资源上的估计成本(I/O或CPU)。这两个度量将帮助你确定该运算符是否是I/O密集或CPU密集,例如你可以看到Clustered Index Seek运算符主要与I/O有关,而Hash Match运算符主要与CPU有关。
6).Estimated Operation Cost:执行该操作的成本。
7).Estimated Subtree Cost:表示到当前节点为止整个子树的累积成本。
8).Estimated Number of Rows:该运算符预计的返回行数
9).Estimated Rows Size:
10).Actual Rebinds和Actual Rewinds:这两个度量仅作为Nested Loops链接内侧的运算符有关,在其他运算符中,Rebinds将显示为1,Rewinds将显示为0。它们表示内部Init方法被调用的次数,重新绑定次数和重绕次数之和等于链接外侧所处理的行数。重新绑定意味着链接的一个或多个参数发生更改后,必须重新计划链接的内侧,重绕意味着任何相关参数都没有发生更改,可以重用之前的内侧结果集。