描述自動微調
自動微調是一項監視和分析功能,可持續了解您的工作負載,並找出潛在問題和改進。
自動微調建議是以從查詢存放區收集到的資料為依據。 執行計畫會隨著時間而進化,因為結構描述變更、索引修改或對資料所做的變更會導致統計資料更新。 這種進化可能會導致查詢執行效能不佳,因為執行計畫已不再符合指定查詢的需求。
此外,自動微調可讓您針對效能計量進行收集和套用機器學習服務,以提供建議的改良功能,甚至可以自行修正。
不論是在內部或雲端,自動微調都可讓您識別查詢執行計畫迴歸所造成的問題。 此外,在 Azure SQL Database 中,您可以利用索引微調來進一步改善查詢效能。 Azure SQL Database 的自動微調可以識別應該在資料庫中新增或甚至移除的索引,以提升查詢效能。
自動計劃修正
在查詢存放區資料的協助下,資料庫引擎可以判斷查詢執行計畫的效能何時降低。 雖然您可以透過使用者介面手動識別迴歸計畫,但查詢存放區也提供可自動通知您的選項。
在上述範例中,您可以看到計畫識別碼 1 上的核取記號,這表示計畫已強制執行。 啟用此功能之後,資料庫引擎會在下列情況下自動強制任何建議的查詢執行計畫:
- 上一個計畫的錯誤率高於建議的計畫
- 預估的 CPU 增益大於 10 秒
- 強制執行計畫的執行效能高於上一個計畫
在執行 15 次查詢後,計畫會還原回最後一個已知的良好計畫。
當強制執行計畫自動發生時,資料庫引擎會套用最後一個已知的良好計畫,也會繼續監視查詢執行計畫的效能。 如果強制計畫的執行效能不如上一個計畫,則會遭到取消並強制編譯新的計畫。 如果強制計畫的執行效能繼續優於先前的不良計畫,則會繼續強制執行,直到重新編譯發生為止。
您可以透過 T-SQL 查詢來啟用自動計畫修正,如下所示。 命令必須在查詢存放區啟用,並且處於 Read-Write 模式時才能成功。 如果這兩個準則中有任何一項不符合,ALTER 陳述式便會失敗。
ALTER DATABASE [WideWorldImporters] SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON);
您可以透過動態管理檢視 (DMV sys.dm_db_tuning_recommendations
,可在 SQL Server 2017 或更高版本中取得,也可以在 Azure SQL Database 解決方案中取得) 來檢查自動微調建議。 DMV 所提供的資訊包括像是提供建議的原因、建議類型,以及建議狀態。 若要確認資料庫已啟用自動微調,請檢查檢視 sys.database_automatic_tuning_options
。
自動索引管理
Azure SQL Database 可執行自動索引微調。 經過一段時間後,資料庫會學習現有的工作負載,並提供新增或移除索引的建議,以改善效能。 如同強制改善的查詢計畫,資料庫可以設定為允許根據現有的索引效能建立或移除自動索引,如下所示:
啟用時,[效能建議] 頁面會根據查詢效能,識別可建立或卸除的索引。 請記住,這項功能不適用於內部資料庫,只適用於 Azure SQL Database。
或者,使用下列查詢來查看資料庫中所啟用的自動微調功能:
SELECT name,
desired_state_desc,
actual_state_desc,
reason_desc
FROM sys.database_automatic_tuning_options
建立新索引可能會耗用資源,而且索引建立的時間很重要,以確保對您的工作負載不會有負面影響。
Azure SQL Database 會監視實作新索引所需的資源,以避免造成效能降低。 例如,如果現有的工作負載需要資源,但沒有資源可建立索引,則微調動作會延後,直到資源可供使用為止。
監視可確保採取的任何動作不會損害效能。 如果索引卸除後查詢效能明顯降低,則會自動重新建立最近卸除的索引。