【SQL 编程你也行】SQL Server 2014新功能之动态视图:sys.dm_exec_query_profiles


当查询正在执行时,监控实时查询过程。这个动态性能视图,可以确定查询的哪个部分运行的慢。


具体的用法:


1、开启跟踪

SET STATISTICS PROFILE ON;
GO


2、在一个会话中运行一个sql

注意,这个sql是写法有问题的,是笛卡尔积,会产生大量垃圾数据。

select *
from [dbo].t1
cross 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=52
GROUP BY node_id,physical_operator_name
ORDER BY node_id;


下图是返回的结果,而且每次查询都会变化,特别是“这个操作返回的行数”,一开始很小,随着查询一直在运行,返回的行数会越来越多。

通过这个profile,我们可以实时跟踪执行计划中的操作,都返回了多少行,把这个行数和实际的行数对比,来判断执行计划是否正确合理。


【SQL 编程你也行】SQL Server 2014新功能之动态视图:sys.dm_exec_query_profiles_第1张图片


你可能感兴趣的:(【SQL 编程你也行】SQL Server 2014新功能之动态视图:sys.dm_exec_query_profiles)