当查询正在执行时,监控实时查询过程。这个动态性能视图,可以确定查询的哪个部分运行的慢。
具体的用法:
1、开启跟踪
SET STATISTICS PROFILE ON; GO
2、在一个会话中运行一个sql
注意,这个sql是写法有问题的,是笛卡尔积,会产生大量垃圾数据。
select *from [dbo].t1cross join t1 t2
3、监控
SELECT node_id, physical_operator_name 物理操作符, SUM(row_count) 这个操作返回的行数, SUM(estimate_row_count) AS 估计行数, CAST(SUM(row_count)*100 AS float)/SUM(estimate_row_count) [行数占估计行数%]FROM sys.dm_exec_query_profiles WHERE session_id=52GROUP BY node_id,physical_operator_nameORDER BY node_id;
下图是返回的结果,而且每次查询都会变化,特别是“这个操作返回的行数”,一开始很小,随着查询一直在运行,返回的行数会越来越多。
通过这个profile,我们可以实时跟踪执行计划中的操作,都返回了多少行,把这个行数和实际的行数对比,来判断执行计划是否正确合理。