对于SQL Server的慢SQL信息排查,我们可以利用一些系统自带的统计信息表来帮助我们进行问题SQL定位。
一、系统表详解
1.1 dm_exec_query_stats
该表记录了SQL Server中相关的执行计划的统计信息,从该表中我们可以从不同的维度分析是否存在一些资源消耗较大的SQL。
重点关注字段及其含义:
- sql_handle : SQL唯一标识,可通过该信息在sys.dm_exec_sql_text中查看具体的SQL文本信息
- plan_handle : SQL执行计划唯一标识,可通过该信息在sys.dm_exec_query_plan 中查看具体的SQL执行计划信息
- creation_time : 执行计划编译时间
- last_execution_time : 执行计划最近一次执行时间
- execution_count : 自编译以来执行次数
- total_worker_time : 自编译以来执行消耗总CPU时间
- last_worker_time : 自编译以来最近一次CPU耗时
- min_worker_time : 自编译以来单次执行的最小CPU耗时
- max_worker_time : 自编译以来单次执行的最大CPU时间
- total_physical_reads : 自编译以来执行消耗总物理读次数
- total_logical_writes : 自编译以来执行消耗总逻辑写次数
- total_logical_reads :自编译以来执行消耗总逻辑读次数
- total_elapsed_time :自编译以来执行总耗时
- total_rows :查询返回的总行数