Index Advisorを使って、Azure SQL Databaseのパフォーマンスを改善

Index Advisorは、データベースのインデックスの設計とレイアウトを最適化することでデータベースのパフォーマンスを改善するのを助ける、Azure SQL Databaseの新機能です。

Index Advisorによって、自分で分析と最適化に多くの時間と労力を費やす必要なしに、主要なクエリのパフォーマンスを改善し、データベース全体のDTU使用量を削減できます。

Index Advisorはどのように動作するか?

Index Advisorは、データベースのワークロードを継続的に監視し、分析を実行し、DBのパフォーマンスをさらに改善できる新しいインデックスを推奨します。

  • 推奨は常に最新の状態に保たれます。DBのワークロードとスキーマが進化するにつれて、Index Advisorは変更を監視し、それに応じて推奨を調整します。
  • それぞれの推奨には、DBワークロードのパフォーマンスへの影響の推定が付いています。最も影響力の強い推奨を優先するために、この情報を使えます。

加えて、Index Advisorは、推奨されたインデックスを作成する、非常に簡単で強力な方法を提供します。

  • 新しいインデックスの作成に必要なのは、わずか数クリックです。
  • Index Advisorは、新たに作成されたインデックスの影響を計測し、インデックスのユーザーへの影響に関するレポートを提供します。

次の簡単な手順で、Index Advisorの作業を開始し、データベースのパフォーマンスを改善できます。Index Advisorの簡単で直観的なユーザー インターフェイスに慣れるためには、文字通り5分しかかかりません。作業を開始しましょう!

手順1: Index Advisorプレビューに登録

Index Advisorプレビューへの登録は、非常に簡単で手短です:

  • Azureポータルのデータベース ブレードに進みます。
  • データベース ブレードのIndex Advisorパーツを見つけます (見つけるためにスクロール ダウンする必要があるかもしれません)。
  • 登録ダイアログを開くために、クリックします。
  • プレビューの条件を承認するために、チェック ボックスをチェックし、OKをクリックします。

image

Index Advisorに登録されました。使っている各Azureサブスクリプションごとに1回だけ、登録する必要があります。登録したら、このサブスクリプションのすべてのDBで、インデックスの推奨が即座に利用可能になります。

手順2: 推奨されたインデックスを確認

Index Advisorプレビューに登録した後、このデータベースに対する新しいインデックスの推奨がある場合、データベース ブレードにIndex Advisorパーツが表示されます。Index Advisorパーツをクリックすると、Index Advisorメイン ブレードが開きます。

image

Index Advisorのメイン ブレードは、2つの部分に分かれています。ブレードの上部には、このデータベースで推奨されるインデックスが表示されており、下部には、Index Advisorによる進行中、および完了したインデックス操作のログが表示されています (最初にブレードを開いた時には、これは空です)。

推奨されたインデックスは、ワークロードのパフォーマンスへの影響の推定で並べ替えられています。推奨の詳細を表示するためには、推奨されたインデックスのいずれかをクリックします。

手順3: インデックスの詳細を確認し、推奨されたインデックスを作成

インデックスの詳細ブレードは、インデックスに含まれる列や、作成後のインデックスのサイズの推定といった、推奨されたインデックスの詳細を表示します。また、「スクリプトの表示」ボタンをクリックして、インデックスのためのTransact-SQLスクリプトも確認できます。

image

Index Advisorによって、「インデックスの作成」をクリックして、推奨されたインデックスを作成できます。これを行うと、次のことを行う、調整されたインデックス作成ワークフローが起動します:

  1. ワークフローのパフォーマンスのベースラインを収集します。
  2. インデックスを作成します。
  3. ワークフローのパフォーマンスを計測し、インデックスの影響を検証するために、それを (インデックス作成前の) ベースラインのパフォーマンスと比較します。
  4. インデックスが悪影響を与えた場合は、Index Advisorは、自動で元に戻す操作を実行します。

ご覧の通り、Index Advisorは、あなたに代わってインデックス作成に関連するすべての重労働を行い、あなたは、時間とともにワークフローのパフォーマンスが向上するだけだと安心できます。

手順#1と#3は、完了するのにいくらかの時間 (通常は1日以下) がかかるので、エンド ツー エンドのインデックス作成ワークフローは、通常、完了するのに約2日かかる (ですが、これは完全に自動化されており、監視は必要ない) ことに注意してください。

Index Advisorは、すべてのアクションをオンライン操作 (英語 / 日本語) として実行するので、データベースは常に利用可能です。

手順4: 作成されたインデックスに対するインデックスの影響レポートを確認

インデックスの作成に成功したら、操作ログのインデックスのエントリをクリックして、インデックスの影響に関するレポートにアクセスできます。

image

この例では、新たに作成されたインデックスが、データベース全体のDTU使用量を驚くべきことに42%も削減し、ワークロードのスループットを (そして、おそらきはクエリのレイテンシも) 大幅に改善したことが分かります。また、パフォーマンスが改善したクエリが2つあり、パフォーマンスが悪化したクエリがないことも分かります。そのため、おそらく、このインデックスを維持することは、大いに意味をなします (ですが、新たなインデックスを元に戻したい場合は、手動でそれを行う選択肢があります)。

自分のDBにインデックスの推奨がありません。なぜですか?

DBに対してインデックスの推奨がないことには、いくつかの理由があります:

  • このDBに対して信頼性の高いインデックスの推奨を提供するために、十分な利用履歴がありません。通常、DBが最近作成されたか、しばらくの間DBが活発に使われていない場合に、これが起こります。
  • 対象のDBで、最近、データベース スキーマやクエリのワークロードに大幅な変更が行われました。このDBに対して信頼性の高いインデックスの推奨を提供するためには、さらなる監視時間が必要です。
  • Index Advisorが、DBのパフォーマンスを著しく改善するインデックスを見つけていません。通常、これは、この時点でこのDBで必要なすべてのインデックスがすでに作成済みであることを意味しています。

落胆する理由はありません。Index Advisorはデータベースを監視し続け、新たな推奨がある際にあなたに知らせます。

次の手順

Index Advisorによって、データベースのパフォーマンスを改善するのがいかに簡単になるかを見てきました。

  • 監視されたワークロードを基にして、データベースへのインデックスの推奨を提供。
  • すべての重労働 (ワークロードのパフォーマンスのベースライン計測、インデックスの影響の計測、(必要な場合の) 自動ロールバック) を行って、推奨されたインデックスを実装する簡単な方法を提供。

Index Advisorを今すぐ試し、Index Advisorメイン ブレードのフィードバック ボタンを使って、皆さんのフィードバックを我々に共有してください。

image

Index Advisorのさらに詳細な情報については、オンライン ドキュメント (英語 / 日本語)Channel 9ビデオを確認してください。

関連情報

One thought on “Index Advisorを使って、Azure SQL Databaseのパフォーマンスを改善

Leave a comment