博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server 2016新特性:Query Store
阅读量:5966 次
发布时间:2019-06-19

本文共 1300 字,大约阅读时间需要 4 分钟。

使用Query Store监控性能

SQL Server Query Store特性可以让你看到查询计划选择和性能。简化了性能调优,可以快速的发现因为查询计划的选择导致的性能的差别。Query Store自动历史的查询,计划和运行时的统计信息,保留这些可以用来检查。数据通过时间窗口来分隔数据,你可以看见数据库的使用模式,并且理解查询计划在服务中的变化。可以你使用ALTER DATABASE SET选项来配置Query Store。
 
启动Query Store
ALTER DATABASE AdventureWorks2012 SET QUERY_STORE = ON;
 
Query Store中的信息
特定查询的执行计划涉及到很多,比如统计信息变化,schema变化,索引的创建和删除等等。过程的执行计划只会保存最新的执行计划,计划也会因为内存压力来牺牲计划的cache。因为执行计划的变化导致性能问题也是比较多的。
因为每个查询都保留了多个执行计划,可以通过策略强制查询处理器使用特定的执行计划。Query Store的计划强制和查询hint的USE PLAN相似,不需要应用程序做任何修改。计划强制可以解决查询的计划修改导致的性能退化。
Wait Stats,是另外一个source用来调优SQL Server。对于长时间,wait stats是实例级别的,并不能回归到实际查询。在SQL Server 2017,在Query Store中增加另外一个维度来跟踪wait stats。
 
Query Store特性使用场景:
  • 快速查找和通过强制到之前的查询计划,修复一个计划性能回归
  • 时间窗口内查询的运行次数。
  • 查看过去的x小时,top n查询
  • 审计给定查询的查询计划
  • 分析特定数据库的资源使用
  • 等待resource的top n查询
  • 理解特定查询和计划的wait nature
 
Query Store包含的三个Store:
  • plan store,用来保存执行计划信息
  • runtime stats store,保存执行的统计信息
  • wait stats store,保存wait stats
可以通过max_plans_per_query配置每个查询的保存的plan数量,为了提高性能写入这些store都是一部的,为了最小化空间的使用运行时的统计信息,按某个时间范围内聚合。
以下查询返回query store中的查询和计划:
 
SELECT Txt.query_text_id, Txt.query_sql_text, Pl.plan_id, Qry.* 
FROM sys.query_store_plan AS Pl 
JOIN sys.query_store_query AS Qry 
    ON Pl.query_id = Qry.query_id 
JOIN sys.query_store_query_text AS Txt 
    ON Qry.query_text_id = Txt.query_text_id ;
 
查找等待查询
从SQL Server 2017开始每个查询的等待信息,可以使用    查询
 
 

转载地址:http://elmax.baihongyu.com/

你可能感兴趣的文章
axios 请求拦截封装使用
查看>>
Pycharm选择pyenv安装的Python版本
查看>>
?Sized 和 Sized
查看>>
Java中如何防止内存泄漏的发生
查看>>
Java中Int转byte分析
查看>>
滑动窗口最大值的golang实现
查看>>
常用的服务器控件
查看>>
初学Phreeze 3
查看>>
会计的思考(17):还原会计报表的企业个性之一
查看>>
java对象初始化顺序的简单验证
查看>>
[CF452E]Three strings
查看>>
获取指定进程所对应的可执行(EXE)文件全路径(代码)
查看>>
【jQuery实例】Ajax登录页面
查看>>
ORA-01722:无效数字
查看>>
3.11 框架和样式表
查看>>
FileProvider的使用
查看>>
gulp + webpack + sass 学习
查看>>
搭建golang+vscode开发环境
查看>>
C#占位符
查看>>
活着的目标
查看>>