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,如需轉載請自行聯系原作者