開始使用查詢微調小幫手 (QTA)
您計劃將兩個生產資料庫從 SQL Server 2012 移轉至新的 SQL Server 2022 實例。 因為資料庫正在使用中,因此您想要一開始保留原始設定的相容性層級,並重新指向應用程式。 基數估算器自 SQL Server 2014 之後已變更,而且您想要在將資料庫的相容性層級變更為 SQL Server 2022 (160) 之前測量查詢效能。
當您移動相容性層級並套用新的基數估算器演算法時,您需要尋找並修正任何回歸的查詢。 使用此方法可測量效能基準,以在升級相容性層級之後與比較。
啟用 查詢存放區 會收集尋找回歸查詢所需的計量,並使用查詢微調小幫手 (QTA) 會引導您修正回歸查詢。 本單元提供 查詢存放區和 QTA 的概觀。
資料存放區概觀
查詢存放區功能於 SQL Server 2016 推出,可持續收集資料庫中查詢執行和效能的相關資訊。 查詢存放區 的運作方式就像飛行數據記錄器一樣,以收集查詢和計劃的運行時間資訊。 如果您儲存此執行階段資料,即可追蹤一段時間的效能。 如果發生錯誤,有資訊歷程記錄可探索問題的原因。
從 SQL Server 2022 開始,在 Azure SQL 資料庫 和 SQL 受管理執行個體 中,預設會針對新的資料庫啟用 查詢存放區。 在 SQL Server 2016、SQL Server 2017 和 SQL Server 2019 中,預設不會啟用 查詢存放區,但 SQL Server 2016 或更新版本的實例上的任何資料庫都可以啟用、停用及設定 查詢存放區。 如需如何在資料庫上啟用 查詢存放區 或確認其設定的指示,請參閱下一個單元。
查詢存放區 可以使用比 SQL Server 實例更早相容性層級的資料庫。 例如,如果您將資料庫從 SQL Server 2012 移轉至 SQL Server 2022,並將相容性層級保留為 110,查詢存放區 仍然可以在資料庫上運作。
不過,智慧查詢處理和其他自動效能改善的許多功能只會針對較新的資料庫相容性層級啟用。 因此,您應該嘗試在最新的 SQL Server 資料庫相容性層級上測試應用程式效能。 查詢存放區和QTA可協助進行此效能測試。
在資料庫上啟用時,查詢存放區 收集並報告查詢的下列統計數據:
- 迴歸查詢
- 整體資源耗用量
- 最耗用資源的查詢
- 強制計劃的查詢
- 高變化的查詢
- 查詢等候統計資料
- 追蹤查詢
當查詢優化器使用導致效能降低的新查詢計劃時,就會發生回歸查詢。 回歸可能發生在新增、卸除或改變索引、更新統計數據或變更數據基數等重要變更之後發生。
在 查詢存放區 之前,SQL Server 沒有提供回歸原因的深入解析,而且識別問題對資料庫開發人員和系統管理員而言是個問題。 您現在可以使用 查詢存放區 來尋找回歸的查詢,並強制優化器從歷程記錄使用特定計劃。
在可能成千上萬的查詢中,通常會耗用大部分的系統資源。 查詢存放區會識別出哪些查詢的耗用量最高,其原因可能是因為迴歸,或因為調整不佳。 視設定而定,您可以依持續時間、CPU、記憶體、I/O 或執行次數來篩選結果。
您可以使用 查詢存放區 來監視進行中的效能,以及針對 A/B 測試來比較套用單一變更前後的效能。 例如,您可以將索引新增至查詢參考的數據表,讓聯結查閱更快,藉此調整查詢的效能。 在您新增索引之前和之後比較 查詢存放區 中的統計數據,會告訴您索引是否會影響效能。 您也可以比較新增硬體或更新應用程式之後的統計數據。
查詢微調小幫手概觀
查詢調整小幫手 (QTA) 會使用來自 查詢存放區 的數據來尋找開始回歸的查詢。 QTA 會自動進行實驗,以尋找加速查詢的解決方案,再讓查詢效能不佳,達到影響用戶的點。
您可以在升級之後,使用 查詢存放區 和 QTA 來監視和優化資料庫效能。 將資料庫移轉至 SQL Server 2016 或更高版本之後,您會讓資料庫的相容性層級保持不變,並讓 查詢存放區 收集基準查詢效能統計數據。
然後,您可以變更相容性層級,並繼續使用 查詢存放區 數據來測量查詢的效能統計數據。 您可以比較統計數據,以找出每個查詢是否執行得更好、相同或比升級前更糟。
當您變更相容性層級以升級資料庫時,SQL Server 會變更它所使用的基數估算器版本。 QTA 會尋找查詢回歸的可能模式,因為基數估算器的變更,以及尋找效能改善的實驗。 然後,您可以為顯示改進的查詢建立計劃指南。
摘要
查詢存放區可持續測量您的查詢效能統計資料,就像飛機的飛行資料記錄器會擷取其活動一樣。 不論相容性層級為何,您可以在 SQL Server 2016 或更新版本的任何資料庫上啟用 查詢存放區。 使用 查詢存放區 來持續監視查詢效能,以及針對 A/B 測試來測量單一變更的影響。
當您將資料庫升級至 SQL Server 2014 或更高版本時,基數估算器的變更可能會使先前 SQL Server 版本中快速的查詢變慢。 在理想情況下,您想要在影響使用者之前尋找並修正任何回歸。 在資料庫上啟用查詢存放區,表示系統會持續收集查詢的統計資料。 然後,您可以使用 QTA 來識別並修正回歸查詢,再成為問題。