在 Azure 入口網站中啟用自動調整,以監視查詢並改善工作負載效能
適用於:Azure SQL 資料庫 Azure SQL 受控執行個體
Azure SQL Database 會自動管理資料服務,其會不斷地監視您的查詢,並識別您為改善工作負載效能可以執行的動作。 您可以檢閱建議並加以手動套用,或讓 Azure SQL 資料庫自動套用矯正措施 - 這稱為模式。
可以透過下列方式在伺服器或資料庫層級啟用自動調整:
- Azure 入口網站
- REST API 呼叫
- T-SQL 命令
注意
針對 Azure SQL 受控執行個體,只能透過 T-SQL 設定支援的選項 FORCE_LAST_GOOD_PLAN。 本文所述的 Azure 入口網站基礎設定和自動索引調整選項,不適用於 Azure SQL 受控執行個體。
注意
目前不支援透過 ARM (Azure Resource Manager) 範本設定自動調整選項。
在伺服器上啟用自動調整
在伺服器層級上,您可以選擇繼承「Azure 預設值」的自動調整設定,或不繼承設定。 Azure 預設值為已啟用 FORCE_LAST_GOOD_PLAN,並已停用 CREATE_INDEX 和 DROP_INDEX。
Azure 入口網站
若要在 Azure SQL Database 中的伺服器上啟用自動調整,請導覽至 Azure 入口網站中的伺服器,然後選取功能表中的 [自動調整]。
依序選取您想要啟用的自動調整以及 [套用]。
伺服器上的自動調整選項會套用到此伺服器上的所有資料庫。 根據預設,所有資料庫會都繼承其父伺服器的組態,但這可加以覆寫並針對每個資料庫個別加以指定。
REST API
若要深入了解如何使用 REST API 在伺服器上啟用自動調整,請參閱伺服器自動調整的 UPDATE 和 GET HTTP 方法。
在個別的資料庫上啟用自動調整
Azure SQL 資料庫可讓您個別指定每個資料庫的自動調整設定。 在資料庫層級上,您可以選擇繼承父伺服器「Azure 預設值」的自動調整設定,或不繼承設定。 Azure 預設值設為 FORCE_LAST_GOOD_PLAN 已啟用,CREATE_INDEX 已停用,且 DROP_INDEX 已停用。
提示
一般建議是在伺服器層級管理自動調整設定,以便在每一個資料庫上自動套用相同的組態設定。 只有在您要求該資料庫的設定不同於繼承自相同伺服器的其他設定時,設定自動調整個別的資料庫。
Azure 入口網站
若要在單一資料庫上啟用自動調整,請導覽至 Azure 入口網站中的資料庫,然後選取 [自動調整]。
您可以針對每個資料庫分開設定個別的自動調整設定。 您可以手動設定個別的自動調整選項,或指定選項從伺服器繼承其設定。
選取所需的組態後,按一下 [套用]。
REST API
若要深入了解如何使用 REST API 在單一資料庫上啟用自動調整,請參閱 Azure SQL 資料庫自動調整的 UPDATE 和 GET HTTP 方法。
T-SQL
若要透過 T-SQL 在單一資料庫上啟用自動調整,請連線到該資料庫並執行下列查詢:
ALTER DATABASE current SET AUTOMATIC_TUNING = AUTO | INHERIT | CUSTOM
將自動調整設定成 [AUTO],將會套用 Azure 預設值。 設定成 [INHERIT],將會從父伺服器繼承自動調整設定。 若選擇 [CUSTOM],您將需要手動設定自動調整。
若要透過 T-SQL 設定個別的自動調整選項,請連線到資料庫並執行如下的查詢:
ALTER DATABASE current SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON, CREATE_INDEX = ON, DROP_INDEX = OFF)
將個別的調整選項設定成 [開啟],將會覆寫該資料庫所繼承的任何設定,並啟用該調整選項。 將其設定成 [關閉],也會覆寫資料庫所繼承的任何設定,並停用該調整選項。 指定為 DEFAULT 的自動調整選項,將會繼承伺服器層級設定的自動調整設定。
重要
如果為作用中異地複寫,則只需要在主要資料庫上設定自動調整。 自動套用的調整動作 (例如,建立或刪除範例索引) 會自動複寫到異地次要複本。 嘗試在唯讀次要複本上透過 T-SQL 啟用自動調整會導致失敗,因為不支援在唯讀次要複本上使用不同的調整設定。
若要深入了解用來設定自動調整的 T-SQL 選項,請參閱 ALTER DATABASE SET 選項 (Transact-SQL)。
疑難排解
自動建議管理已停用
如果有錯誤訊息指出自動建議管理已停用,或由系統停用,最常見的原因是:
- 查詢存放區未啟用,或
- 查詢存放區對指定的資料庫處於唯讀模式,或
- 查詢存放區因為配置的儲存體空間耗盡而停止執行。
您可以考慮下列步驟來修正此問題:
- 清除查詢存放區,或使用 T-SQL 將資料保留期間修改為「自動」,或增加查詢存放區大小上限。 請參閱如何為查詢存放區設定建議的保留和擷取原則。
- 使用 SQL Server Management Studio (SSMS) 並遵循下列步驟:
- 連線到 Azure SQL 資料庫
- 以滑鼠右鍵按一下資料庫
- 移至 [屬性],然後按一下 [查詢存放區]
- 將 [作業模式] 變更為讀寫
- 將 [存放區擷取模式] 變更為 [自動]
- 將 [以大小為基礎的清除模式] 變更為 [自動]
權限
對於 Azure SQL 資料庫,請在 Azure 入口網站中管理自動調整,或使用 PowerShell 或 REST API 要求 Azure 內建的 RBAC 角色成員資格。
若要管理自動調整,要授與使用者的最低必要權限是 SQL Database 參與者角色的成員資格。 您也可以考量使用較高的權限角色,例如 SQL Server 參與者、參與者和擁有者。
如需使用 T-SQL 管理自動調整所需的權限,請參閱 ALTER DATABASE 的權限。
設定自動調整電子郵件通知
若要接收自動調整所提出建議的自動電子郵件通知,請參閱自動調整電子郵件通知指南。