天天看點

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 ;

查找等待查詢

    本文轉自 Fanr_Zh 部落格園部落格,原文連結:http://www.cnblogs.com/Amaranthus/p/7808305.html,如需轉載請自行聯系原作者