Azure SQL Database 的 Database Advisor 效能建議

適用于:Azure SQL資料庫

Azure SQL Database 會學習及適應您的應用程式。 Azure SQL Database 有許多 Database Advisor,提供可將效能最大化的自訂建議。 這些 Database Advisor 會持續評估並分析使用量歷程記錄,並根據有助改善效能的工作負載模式提供建議。

效能概觀

效能概觀提供資料庫效能的摘要,並可協助您進行效能調整和疑難排解。

Azure SQL 資料庫的效能概觀

  • [建議] 圖格會提供適用於資料庫的微調建議分解 (如果有多個建議,則會顯示前三個)。 按一下此圖格,即會帶您前往 [效能建議選項]
  • [微調活動] 圖格會提供資料庫進行中和已完成微調動作的摘要,讓您快速檢視調整活動的歷程記錄。 按一下此圖格會帶您前往您的資料庫的完整微調記錄檢視。
  • [自動調整] 圖格會顯示資料庫的自動調整設定 (自動套用至資料庫的微調選項)。 按一下此圖格會開啟 [自動化組態] 對話方塊。
  • [資料庫查詢] 圖格會顯示資料庫的查詢效能摘要 (整體 DTU 使用量和排名最前面的資源取用查詢)。 按一下此圖格,即會帶您前往 [查詢效能深入解析]

效能建議選項

Azure SQL Database 提供的效能建議選項如下:

效能建議 單一資料庫和集區資料庫支援 執行個體資料庫支援
建立索引建議 - 建議建立可改善工作負載效能的索引。
卸除索引建議 - 每日建議移除冗餘和重複的索引,不包括唯一索引及長時間 (> 90 天) 未使用的索引。 請注意,此選項與使用分割區切換和索引提示的應用程式不相容。 進階和業務關鍵服務層級不支援捨棄未使用的索引。
參數化查詢建議 (預覽) - 當有一或多個查詢不斷被重新編譯,但結果都是相同的查詢執行計劃時,建議強制參數化。
修正結構描述問題建議 (預覽) - 當 Azure SQL Database 注意到資料庫上發生結構描述相關的 SQL 錯誤數目異常時,會顯示結構描述更正的建議。 Microsoft 即將淘汰「修正結構描述問題」的建議。

Azure SQL 資料庫的效能建議

若要套用效能建議,請參閱套用建議。 若要查看建議的狀態,請參閱監視作業

您也可以找到過去所套用微調動作的完整歷程記錄。

建立索引建議

Azure SQL Database 會持續監視正在執行的查詢,並找出可改善效能的索引。 確信遺漏特定索引之後,就會建立新的 [建立索引] 建議。

評估一段時間之後,Azure SQL Database 會確定索引所能提升的效能。 根據評估的顯現效能,將建議分類為高、中或低。

使用建議建立的索引一律會標記為自動建立的索引。 查看 sys.indexes 檢視,可以得知哪些是自動建立的索引。 自動建立的索引不會封鎖 ALTER/RENAME 命令。

如果您嘗試卸除有自動建立之索引的資料行。 自動建立的索引會隨該命令卸除。 一般索引會對已編製索引的資料行封鎖 ALTER/RENAME 命令。

套用索引建立建議之後,Azure SQL Database 會比較基準效能和查詢效能。 如果新索引改善了效能,建議就會標示為成功並可取得影響報告。 如果索引未能改善效能,便會自動還原。 Azure SQL Database 會使用此程序來確保建議可改善資料庫效能。

任何建立索引建議都有輪詢原則,如果資料庫或集區的資源使用量很高時不允許套用建議。 輪詢原則會將 CPU、資料 IO、記錄 IO 和可用儲存體列入考慮。

如果在過去 30 分鐘內 CPU、資料 IO 或記錄 IO 高於 80%,則會延遲建立索引建議。 如果在建立索引後,可用的儲存體低於 10%,則建議會進入錯誤狀態。 如果幾天後,自動調整仍認為該索引有所幫助,則程序會重新開始。

此程序會重複進行,直到有足夠的儲存體可用來建立索引,或直到索引不再是有所幫助的狀態為止。

卸除索引建議

除了偵測遺漏的索引,Azure SQL Database 還會持續分析現有索引的效能。 如果未使用索引,Azure SQL Database 會建議將它卸除。 在兩種情況下會建議使用卸除索引:

  • 索引是另一個索引的複本 (編製和內含索引的資料行、分割、結構描述及篩選器相同)。
  • 索引長時間都未使用 (93 天)。

卸除索引建議在實作後也會經過驗證。 如果效能提升,即可取得影響報告。 如果效能降低,則會還原建議。

參數化查詢建議 (預覽)

當您有一或多個查詢不斷被重新編譯,但結果都是相同的查詢執行計劃時,即會出現參數化查詢建議。 這種狀況會製造套用強制參數化的機會。 而強制參數化允許查詢計畫納入快取並在未來重複使用,以改善效能並減少資源使用量。

每個查詢一開始都需要進行編譯,以產生執行計畫。 每個產生的計畫都會新增至計畫快取。 相同查詢的後續執行可以從快取中重複使用這個計畫,而不需要進一步編譯。

具有非參數化值的查詢可能會導致效能超出負荷,因為每當非參數化的值不同時,執行計畫就會重新編譯。 在許多情況下,具有不同參數值的相同查詢會產生相同的執行計畫。 不過,這些計劃仍會個別加入至計畫快取。

重新編譯執行計畫的程序會使用資料庫資源、增加查詢持續時間,以及造成計畫快取溢位。 這些事件接著會導致計劃從快取中收回。 在資料庫上設定強制參數化選項,可以改變此行為。

為了協助您評估此建議的影響,我們提供了實際 CPU 使用量和預計 CPU 使用量 (如同已套用建議) 之間的比較。 這項建議可協助您節省 CPU 資源。 也可以協助您減少計畫快取的查詢持續時間和負擔,這表示多個計畫可以留在快取中並加以重複使用。 您可以按一下 [套用] 命令,快速套用此建議。

套用此建議之後,即可在幾分鐘內於資料庫上啟用強制參數化。 它會啟動可持續約 24 小時的監視程序。 經過這段期間之後,您即可看到驗證報告。 此報告顯示資料庫在套用建議前後 24 小時的 CPU 使用量。 Azure SQL Database Advisor 有一項安全機制,會在偵測到效能衰退時,自動還原所套用的建議。

修正結構描述問題建議 (預覽)

重要

Microsoft 即將淘汰「修正結構描述問題」的建議。 建議您使用 Intelligent Insights 來監視資料庫效能問題,包括先前涵蓋的「修正結構描述問題」建議。

當 Azure SQL Database 服務注意到資料庫上發生結構描述相關的 SQL 錯誤數目異常時,會出現修正結構描述問題的建議。 您的資料庫在一小時內遇到多個結構描述相關的錯誤時 (無效的資料行名稱、無效的物件名稱等),通常會出現此建議。

「結構描述問題」是一種語法錯誤類別。 當 SQL 查詢定義與資料庫結構描述定義不符時,就會發生這類問題。 例如,查詢預期的其中一個資料行可能在目標資料表中遺失,反之亦然。

當 Azure SQL Database 服務注意到 SQL 資料庫上發生結構描述數目異常相關的 SQL 錯誤時,即會出現「修正結構描述問題」的建議。 下表顯示與結構描述問題相關的錯誤:

SQL 錯誤碼 訊息
201 程序或函數 '' 必須有參數 '',但未提供。
207 無效的資料行名稱 '*'。
208 無效的物件名稱 '*'。
213 資料行名稱或提供的數值數量與資料表定義不相符。
2812 找不到預存程序 ' *'。
8144 程序或函數 * 指定了太多的引數。

自訂應用程式

開發人員可能會考慮使用 Azure SQL Database 的效能建議來開發自訂應用程式。 您可以透過 Get-AzSqlDatabaseRecommendedAction API 存取在入口網站中針對資料庫所列出的所有建議。

下一步