適用於 Azure SQL 資料庫的 Database Advisor 效能建議

適用於:Azure SQL 資料庫

Azure SQL 資料庫會學習您的應用程式並配合其進行調整。 Azure SQL 資料庫有許多 Database Advisor,可提供自訂建議,讓您發揮最大效能。 這些 Database Advisor 會持續評估及分析使用記錄,並根據有助於改善效能的工作負載模式提供建議。

效能概觀

Azure 入口網站中的效能概觀提供資料庫效能摘要,並協助您進行效能微調和疑難排解。

  • 如果存在,建議圖格會提供資料庫的微調建議明細。 選取此圖格會帶您前往效能建議選項
  • [微調活動] 圖格會提供資料庫的進行中和已完成微調動作的摘要,讓您快速檢視微調活動歷程記錄。 選取此圖格會前往資料庫的建議和微調歷程記錄。 如需詳細資訊,請參閱自動微調
  • [自動微調] 圖格會顯示資料庫的自動微調設定 (自動套用至資料庫的微調選項)。 選取此圖格會開啟 [自動化設定] 對話方塊。 如需資料庫索引和查詢執行計畫自動微調的詳細資訊,請參閱自動微調
  • [資料庫查詢] 圖格顯示資料庫查詢效能的摘要 (整體 DTU 使用量和最耗用資源的查詢)。 選取此圖格會帶您前往查詢效能深入解析
  • 預設圖表提供過去 24 小時資料庫活動的摘要,並提供放大至最近活動的選項。 堆疊橫條圖依 CPU 分析熱門查詢,多線圖依 CPU、資料 IO 和記錄 IO 表示工作負載。 在圖表中選取個別堆疊長條,每個代表一個快取的查詢計劃。 深入了解 [查詢效能深入解析] 頁面,並識別工作負載中成本最高的查詢。 如需詳細資訊,請參閱查詢效能深入解析

在 Azure SQL 資料庫的 Azure 入口網站瀏覽功能表中,瀏覽至 [智慧效能] 底下的 [效能概觀] 頁面。

Screenshot from the Azure portal of the Performance Overview for Azure SQL Database.

效能建議選項

Azure SQL 資料庫中的效能建議選項包括:

效能建議 單一資料庫和集區資料庫支援 執行個體資料庫支援
建立索引建議 - 建議建立可以提高工作負載效能的索引。 No
刪除索引建議 - 建議每天移除備援和重複索引,但唯一索引以及長時間 (>90 天) 未使用的索引除外。 請注意,此選項與使用分割區切換和索引提示的應用程式不相容。 進階和業務關鍵服務層級不支援刪除未使用的索引。 No
參數化查詢建議 (預覽版) - 當您有一個或多個不斷重新編譯,但最終得到相同的查詢執行計畫時,建議強制參數化。 No
修正結構描述問題建議 (預覽版) - 當 Azure SQL 資料庫發現資料庫中發生的與結構描述相關的 SQL 錯誤數量異常時,會顯示結構描述修正建議。 Microsoft 目前準備棄用「修正結構描述問題」建議。 No

A screenshot from the Azure portal showing sample performance recommendations for Azure SQL Database.

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

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

建立索引建議

Azure SQL 資料庫會持續監視正在執行的查詢,並找出可改善效能的索引。 當有足夠的信心認為某個索引缺失後,就會建立新的建立索引建議。

Azure SQL 資料庫透過估計索引隨時間帶來的效能提升來建立信心。 根據評估的效能提升,建議會分成為高、中或低影響類別。

使用建議建立的索引始終標記為自動建立的索引。 可以透過 sys.indexes 檢視,了解哪些是自動建立的索引。 自動建立的索引不會封鎖 ALTER/RENAME 命令。

如果您嘗試刪除具有自動建立的索引的資料行,命令就會通過。 自動建立的索引也使用命令刪除。 一般索引會封鎖編入索引之資料行上的 ALTER/RENAME 命令。

套用建立索引建議之後,Azure SQL 資料庫會將查詢的效能與基準效能進行比較。 如果新索引改善效能,則建議會標示為成功,且可取得影響報告。 如果索引未改善效能,則它會自動還原。 Azure SQL 資料庫遵照此處理程序來確保建議可改善資料庫效能。

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

如果前 30 分鐘內 CPU、資料 IO 或記錄 IO 高於 80%,會延後建立索引建議。 如果建立索引之後,可用的儲存體將低於 10%,則建議會進入錯誤狀態。 如果幾天後自動微調仍然認為索引有益,則該處理程序將再次開始。

此處理程序會重複,直到有足夠的可用儲存體來建立索引,或直到索引不再被視為有益為止。

刪除索引建議

除了偵測遺漏的索引,Azure SQL 資料庫會持續分析現有索引的效能。 如果索引未被使用,Azure SQL 資料庫會建議將其刪除。 在兩種情況下,建議刪除索引:

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

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

參數化查詢建議 (預覽版)

當您有一個或多個不斷重新編譯,但最終得到相同的查詢執行計畫時,參數化查詢的建議會顯示。 此條件將建立套用強制參數化的機會。 反過來,強制參數化可讓查詢計劃在未來被快取和重複使用,從而提高效能並減少資源使用量。

每個查詢一開始都必須經過編譯才能產生執行計畫。 每個產生的計劃都會新增至計畫快取。 相同查詢的後續執行可以從快取重複使用此計畫,這樣就不需要進行額外的編譯。

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

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

為了協助您預計此建議的影響,系統會提供 CPU 實際使用量與 CPU 預計使用量之間的比較 (如同套用建議)。 此建議可協助您節省 CPU 成本。 它也可以協助您減少計畫快取的查詢持續時間和額外負荷,從而讓更多計畫保留在快取中並重複使用。 可以選取 [套用] 命令以快速套用此建議。

套用此建議之後,它會在幾分鐘內對資料庫啟用強制參數化。 它會啟動監視處理程序,持續約 24 小時。 在此期間之後,您可以查看驗證報告。 此報告會顯示套用建議之前和之後 24 小時資料庫的 CPU 使用量。 Azure SQL 資料庫Advisor 具有安全機制,可在偵測到效能迴歸時自動還原所套用的建議。

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

重要

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

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

「結構描述問題」是一類語法錯誤。 當 SQL 查詢的定義和資料庫結構描述的定義不相符時,就會發生這種問題。 例如,目標資料表中可能缺少查詢所需的資料行之一,反之亦然。

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

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

自訂應用程式

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

下一步