適用於 Azure SQL 資料庫的 Database Advisor 效能建議
適用於:Azure SQL 資料庫
Azure SQL 資料庫會學習您的應用程式並配合其進行調整。 Azure SQL 資料庫有許多 Database Advisor,可提供自訂建議,讓您發揮最大效能。 這些 Database Advisor 會持續評估及分析使用記錄,並根據有助於改善效能的工作負載模式提供建議。
效能概觀
Azure 入口網站中的效能概觀提供資料庫效能摘要,並協助您進行效能微調和疑難排解。
- 如果存在,建議圖格會提供資料庫的微調建議明細。 選取此圖格會帶您前往效能建議選項。
- [微調活動] 圖格會提供資料庫的進行中和已完成微調動作的摘要,讓您快速檢視微調活動歷程記錄。 選取此圖格會前往資料庫的建議和微調歷程記錄。 如需詳細資訊,請參閱自動微調。
- [自動微調] 圖格會顯示資料庫的自動微調設定 (自動套用至資料庫的微調選項)。 選取此圖格會開啟 [自動化設定] 對話方塊。 如需資料庫索引和查詢執行計畫自動微調的詳細資訊,請參閱自動微調。
- [資料庫查詢] 圖格顯示資料庫查詢效能的摘要 (整體 DTU 使用量和最耗用資源的查詢)。 選取此圖格會帶您前往查詢效能深入解析。
- 預設圖表提供過去 24 小時資料庫活動的摘要,並提供放大至最近活動的選項。 堆疊橫條圖依 CPU 分析熱門查詢,多線圖依 CPU、資料 IO 和記錄 IO 表示工作負載。 在圖表中選取個別堆疊長條,每個代表一個快取的查詢計劃。 深入了解 [查詢效能深入解析] 頁面,並識別工作負載中成本最高的查詢。 如需詳細資訊,請參閱查詢效能深入解析。
在 Azure SQL 資料庫的 Azure 入口網站瀏覽功能表中,瀏覽至 [智慧效能] 底下的 [效能概觀] 頁面。
效能建議選項
Azure SQL 資料庫中的效能建議選項包括:
效能建議 | 單一資料庫和集區資料庫支援 | 執行個體資料庫支援 |
---|---|---|
建立索引建議 - 建議建立可以提高工作負載效能的索引。 | 是 | No |
刪除索引建議 - 建議每天移除備援和重複索引,但唯一索引以及長時間 (>90 天) 未使用的索引除外。 請注意,此選項與使用分割區切換和索引提示的應用程式不相容。 進階和業務關鍵服務層級不支援刪除未使用的索引。 | 是 | No |
參數化查詢建議 (預覽版) - 當您有一個或多個不斷重新編譯,但最終得到相同的查詢執行計畫時,建議強制參數化。 | 是 | No |
修正結構描述問題建議 (預覽版) - 當 Azure SQL 資料庫發現資料庫中發生的與結構描述相關的 SQL 錯誤數量異常時,會顯示結構描述修正建議。 Microsoft 目前準備棄用「修正結構描述問題」建議。 | 是 | No |
若要套用效能建議,請參閱套用建議。 若要檢視建議的狀態,請參閱監視作業。
您也可以找到過去套用之微調動作的完整歷程記錄。
建立索引建議
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 目前準備棄用「修正結構描述問題」建議。
當 Azure SQL 資料庫發現資料庫中發生的與結構描述相關的 SQL 錯誤數量異常時,會顯示修正結構描述問題的建議。 當您的資料庫在一小時內遇到多個結構描述相關錯誤 (資料行名稱無效、物件名稱無效等等) 時,此建議通常會顯示。
「結構描述問題」是一類語法錯誤。 當 SQL 查詢的定義和資料庫結構描述的定義不相符時,就會發生這種問題。 例如,目標資料表中可能缺少查詢所需的資料行之一,反之亦然。
當 Azure SQL 資料庫注意到資料庫上發生的結構描述相關 SQL 錯誤數量異常時,會顯示「修正結構描述問題」的建議。 下表顯示與結構描述問題相關的錯誤:
SQL 錯誤碼 | 訊息 |
---|---|
201 | 程序或函數 '' 必須有參數 '',但未提供。 |
207 | 無效的資料行名稱 '*'。 |
208 | 無效的物件名稱 '*'。 |
213 | 資料行名稱或提供的數值數量與資料表定義不相符。 |
2812 | 找不到預存程序 '*'。 |
8144 | 程序或函數 * 指定了太多的引數。 |
自訂應用程式
開發人員可能會考慮使用 Azure SQL 資料庫的效能建議來開發自訂應用程式。 可以透過 Get-AzSqlDatabaseRecommendedAction API 存取資料庫入口網站中列出的所有建議。
下一步
- 如需資料庫索引和查詢執行計畫自動微調的詳細資訊,請參閱 Azure SQL 資料庫自動微調。
- 如需監視資料庫效能的詳細資訊,請參閱資料庫監看員。
- 請參閱查詢效能深入解析,了解如何檢視熱門查詢對效能的影響。