• 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) 查询
     
     
  • 相关阅读:
    redis持久化的几种方式
    Spring Cloud基础教程
    微服务实践三: 服务编排
    分库分表的几种常见玩法及如何解决跨库查询等问题
    Spring Cloud微服务开发笔记5——Ribbon负载均衡策略规则定制
    第1章 Python基础-Python介绍&循环语句 练习题&作业
    MySQL中 optimize table '表名'的作用
    Python3 命令行参数
    Python enumerate() 函数
    Python rpartition() 方法
  • 原文地址:https://www.cnblogs.com/Amaranthus/p/7808305.html
Copyright © 2020-2023  润新知