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