Azure portal で自動チューニングを使用してクエリを監視し、ワークロードのパフォーマンスを向上させる
適用対象:Azure SQL Database
Azure SQL Managed Instance
Azure SQL Database では、データ サービスが自動的に管理されます。データ サービスが常にクエリを監視し、ワークロードのパフォーマンスを向上させるために実行できるアクションを識別します。 推奨事項を確認して手動で適用することも、Azure SQL Database に自動的に修正アクションを適用することもできます。 これは、自動チューニング モード と呼ばれます。
サーバーまたはデータベース レベルで自動チューニングを有効にすることができます。次の方法があります。
- Azure Portal
- REST API 呼び出し
- T-SQL コマンド
Note
Azure SQL Managed Instance の場合、サポートされているオプション FORCE_LAST_GOOD_PLAN
は、T-SQLを使用してのみ構成できます。 この記事で説明する Azure portal ベースの構成とインデックスの自動チューニング オプションは、Azure SQL Managed Instance には適用されません。
現時点では、Azure Resource Manager (ARM) テンプレートを使用した自動チューニング オプションの構成はサポートされていません。
サーバーでの自動チューニングの有効化
サーバー レベルでは、"Azure Defaults" から自動チューニング構成を継承するか、または構成を継承しないことを選択できます。 Azure の既定値は FORCE_LAST_GOOD_PLAN
有効、CREATE_INDEX
無効、DROP_INDEX
無効です。
Azure portal
Azure SQL Database のサーバーで自動チューニングを有効にするには、Azure portal でサーバーに移動し、メニューで [自動チューニング] を選択します。
次のように、有効にする自動チューニング オプションを選択し、 [適用] を選択します。
サーバーの自動チューニング オプションは、このサーバー上のすべてのデータベースに適用されます。 既定では、すべてのデータベースがその親サーバーから構成を継承しますが、これをオーバーライドし、各データベースに対して個別に指定することができます。
REST API
REST API を使用してサーバーの自動チューニングを有効にする方法については、サーバーの自動チューニングの UPDATE メソッドと GET HTTP メソッドに関するページを参照してください。
現時点では、Azure Resource Manager (ARM) テンプレートを使用した自動チューニング オプションの構成はサポートされていません。
個々のデータベースで自動チューニングを有効にする
Azure SQL Database では、各データベースの自動チューニング構成を個別に指定することができます。 自動チューニングの構成を親サーバーから継承するか、[Azure の既定値] から継承するか、または構成を継承しないかをデータベース レベルで選択できます。 これらの既定値は次のとおりです。
FORCE_LAST_GOOD_PLAN
が有効になっているCREATE_INDEX
が無効になっているDROP_INDEX
が無効になっている
ヒント
一般的な推奨事項は、すべてのデータベースで同じ構成設定を自動的に適用できるように、サーバー レベルで自動チューニング構成を管理することです。 個々のデータベースの設定が、同じサーバーから設定を継承している他のデータベースの設定と異なるようにする必要がある場合にのみ、個々のデータベースで自動チューニングを構成します。
Azure portal
単一データベースで自動チューニングを有効にするには、Azure portal でデータベースに移動し、 [自動チューニング] を選択します。
個々の自動チューニング設定は、データベースごとに個別に構成できます。 個々の自動チューニング オプションを手動で構成したり、オプションがサーバーから設定を継承するように指定したりできます。
目的の構成を選択したら、[適用]を選択します。
REST API
REST API を使用して単一データベースの自動チューニングを有効にする方法については、Azure SQL Database の自動チューニングの UPDATE メソッドと GET HTTP メソッドに関するページを参照してください。
現時点では、Azure Resource Manager (ARM) テンプレートを使用した自動チューニング オプションの構成はサポートされていません。
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
);
個々のチューニング オプションを ON に設定すると、データベースが継承した設定がオーバーライドされ、チューニング オプションが有効になります。 OFF
に設定すると、データベースが継承した設定もオーバーライドされ、チューニング オプションが無効になります。 DEFAULT
が指定されている自動チューニング オプションは、サーバー レベルの設定から自動チューニング構成を継承します。
重要
アクティブ geo レプリケーションの場合、自動チューニングは、プライマリ データベースでのみ構成する必要があります。 インデックスの作成や削除など、自動的に適用されるチューニング アクションは、geo セカンダリに自動的にレプリケートされます。 読み取り専用セカンダリで T-SQL を使用して自動チューニングを有効にしようとすると、読み取り専用セカンダリで別のチューニング構成がサポートされていないため、エラーが発生します。
自動チューニングを構成するための T-SQL オプションの詳細については、「ALTER DATABASE SET オプション を参照してください。
トラブルシューティング
レコメンデーションの自動管理が無効になっている
自動推奨管理が無効にされたか、システムによって無効にされたというエラー メッセージが表示される場合、最も一般的な原因は次のとおりです。
- クエリ ストアが有効になっていない、または
- クエリ ストアが、指定されたデータベースに対して読み取り専用モードになっている、または
- クエリ ストアの割り当てられたストレージ スペースが不足したため、実行を停止した
この問題を修正するには、次の手順を検討してください。
クエリ ストアをクリーンアップするか、T-SQL を使用してデータ保持期間を "auto" に変更するか、クエリ ストアの最大サイズを増やします。 クエリ ストアに推奨される保持期間とキャプチャ ポリシーを構成する方法については、こちらを参照してください。
SQL Server Management Studio (SSMS) を使用し、次の手順に従います。
- Azure SQL データベースに接続します。
- データベースを右クリックします。
- プロパティ に移動し、クエリ ストア 選択します。
- 操作モードの を の読み取り/書き込みに変更します。
- ストアキャプチャモードの を自動 に変更します。
- サイズ ベースのクリーンアップ モードの を自動 に変更します。
アクセス許可
Azure SQL Database の場合、Azure portal で自動チューニングを管理する場合、または PowerShell または REST API を使用するには、組み込みの Azure ロールベースのアクセス制御 (RBAC) ロールのメンバーシップが必要です。
自動チューニングを管理するために、ユーザーに付与する必要がある最小限のアクセス許可は、SQL Database 共同作成者ロールのメンバーシップです。 また、SQL Server 共同作成者、共同作成者、所有者など、上位の特権ロールの使用を検討することもできます。
T-SQL で自動チューニングを管理するために必要なアクセス許可については、「のアクセス許可ALTER DATABASE
」を参照してください。
メール通知の自動チューニングの構成
自動チューニングによって作成されたレコメンデーションに関する通知を電子メールで自動的に受信するには、自動チューニングの電子メール通知ガイドを参照してください。