zoukankan      html  css  js  c++  java
  • SQL Server 2016新特性:Query Store

    使用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开始每个查询的等待信息,可以使用  sys.query_store_wait_stats (Transact-SQL) 查询
     
     
  • 相关阅读:
    mysql索引
    mysql主从复制(同步)
    MySQL事务与锁
    四大高阶函数
    客户端、服务端通信值统计字符串个数【网络程序设计
    《Unicast QoS Routing Algorithms for SDN Survey 2018》【毕设
    CDQ分治【待补充,数据结构
    KD树学习小结【待补充,数据结构
    线段树模板【数据结构
    【牛客网】牛客练习赛19 F 算式子【数学--递推 、前缀、数字】
  • 原文地址:https://www.cnblogs.com/Amaranthus/p/7808305.html
Copyright © 2011-2022 走看看