SQL Server2016 新功能实时查询统计信息

举报
lyhabc 发表于 2018/12/07 10:51:14 2018/12/07
【摘要】 SQL2016 新功能实时统计信息

很多时候有这样的场景,开发抱怨DBA没有调优好数据库,DBA抱怨开发写的程序代码差,因此,DBA和开发都成为了死对头,无法真正排查问题。

DBA只能使用Windows性能监视器,SQL Server内置的活动监视器、SQL Trace、SQL Profiler、Performance Dashboard等工具,或者使用执行计划来查看查询成本。

为了让DBA有更多有效工具排查问题,SQL Server2016推出了很多新功能,其中一项功能是 Live Query Statistics(LQS 实时查询统计信息),这个功能显示了以往不容易看到的执行时期的内容,例如查询期间的统计信息,这个功能可以帮助DBA找出长时间查询的真正问题根源(root cause)


使用实时统计查询

使用实时查询统计非常简单,只需要在SSMS的工具列,分别按一下【包括实际的执行计划】【包括实时查询统计信息】图标,并执行您的查询就可以了。

251445245625314.jpg

现在可以在【实时查询统计信息】tab页看到查询所用到的运算符,正在统计查询耗费时间,另外在tab页面的左上角可以看到整个查询的完成度

251445245625314.jpg


使用【实时查询统计信息】会对性能有一定影响,当查询比较复杂的时候,所需等待时间也会增加,并且整个过程也会耗用不少CPU资源,因此使用的时机必须要审慎,否则问题未查出来,反而造成数据库更大的压力。

 

提示
如果只使用了【包括实时查询统计信息】,而未打开【包括实际执行计划】,那么在【包括实时查询统计信息】的tab页所看到的经过时间和完成率都会是0

不会显示消耗时间

251445245625314.jpg


在执行计划中向下钻取(drill down)

在实时查询统计信息执行过程中,可以点击任何一个执行计划中的运算符,查看运算符的统计信息,例如:消耗时间(Elapsed time)、运算符的处理进度(operator progress)、目前CPU使用率,根据这些信息帮助DBA找出瓶颈所在

251445245625314.jpg


251445245625314.jpg



实时查询统计信息原理

实时查询统计信息背后的原理其实是通过DMV动态管理视图获取信息,然后呈现在tab页面上,从而让DBA可以不需要自行查询这些DMV,直接以图形化界面来快速找到长时间执行的查询是在哪个环节耗费最多时间和成本。

 


下面是实时查询统计信息所使用的DMV,当然自己也可以通过下面的DMV来查询获得需要的统计信息

SELECT * FROM  sys.dm_exec_requests
SELECT * FROM sys.dm_exec_sql_text
SELECT * FROM sys.dm_exec_query_memory_grants
SELECT * FROM sys.dm_exec_query_plan
SELECT * FROM sys.dm_exec_query_profiles


限制

目前实时查询统计信息尚不支持下列功能

列存储索引(columnstore indexes)
内存优化表(memory optimized tables)
本地编译存储过程(Natively compiled stored procedures)

 



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。