当我们遇到查询超时的时候,会通过预估执行计划分析问题所在,然后做相应的调优。但有时,查询还在运行,而你无法获得实际的执行计划。如果有办法能知道实例内部发生了什么就好了。
SQL Server 2016的实时查询统计(Live Query Statistics),提供了查看一个实时查询的实时执行计划,对当前正在执行的步骤进行了详细的注解。实时查询执行计划显示了整体查询过程,并提供了操作级别的运行时执行统计信息,包括处理的行数、耗时、操作进展等等。这些数据都是实时可用的,而不用等到查询执行完成,这些执行统计信息对于性能问题调优极其有用。
适应版本
该功能从SQL Server 2016 CTP 3.0开始可用,现已在SQL Server 2014 SP1中加入该功能。
适应对象
该特性只对普通表有效;当查询涉及内存优化表或列存储索引时,不能使用。它也不能查看本地编译的存储过程。
警告
该功能主要用于定位问题,使用该功能可能稍微降低整体的查询性能。
显示实时查询统计
显示实时查询执行计划,在工具菜单栏点击“Live Query Statistics”按钮。
你也可以在SQL Server Management Studio中右击选择的查询,然后选择“Include Live Query Statics”来查看实时查询执行计划。
现在执行查询。实时查询执行计划显示了整体的查询过程和运行时执行统计信息(例如耗时、进展等)。查询进展信息和执行统计信息在查询执行的过程中定期更新。使用该信息理解整体查询执行进展和调优慢查询、导致tempdb移除的查询、超时问题。
动态执行计划也可以从“Activity Monitor”中,通过在“Active Expensive Queries”表右击查询语句来访问。
如何启用该特性?
该特性默认是不启用的,这可能是因为进展报告会额外增加开销。统计跟踪架构必须在实时查询统计捕获查询进展信息前启用。你可以在当前当前的查询会话中,通过在SQL Server Management Studio中选择“Include Live Query Statistics”启用统计跟踪架构。还有两种方式可以启用统计跟踪架构,可以用于在其他会话中(例如从Activity Monitor)查看实时查询统计。
1. 在目标会话,执行:
1
|
SET
STATISTICS
XML
ON
;
|
或者
1
|
SET
STATISTICS
PROFILE
ON
;
|
2. 启用扩展事件query_post_execution_showplan。这是一个服务端的设置,用于在所有会话启用实时查询统计。
许可
生成“Live Query Statistics”结果页需要数据库级别的“SHOWPLAN”权限,查看实时统计需要实例级别的“VIEW SERVER STATE”和执行查询的必要权限。
本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1736126 ,如需转载请自行联系原作者