Microsoft Azureクラウドサービスに関する一連の記事の中で、別の記事を共有できます。 今回は、SQL ServerおよびAzure SQL DatabaseチームのMicrosoftプログラムマネージャーであるAndrei Antyufeevが、Azure SQL Databaseクラウドデータベースのインデックスの操作について引き続き説明します。 -ウラジミール・ユネフみなさん、こんにちは。この投稿は、Azure SQL Databaseを使用するすべての人に役立ちます。
前回 、Index Advisorの最初のバージョンを確認しました。 それ以来、アシスタントはGAに成長し、安定性を高め、新しい機会を獲得することができました。
- アシスタントの推奨事項を自動的に適用する機能
- 新しい推奨事項(ドロップインデックス)
- インデックス作成後の視覚化の読み込み
- その他の改善
インデックス管理を忘れる
新しいインデックスを作成するプロセスは、いくつかの段階で行われます。
- インデックスアドバイザーは、生産性を向上させるインデックスの推奨事項をユーザーに提供します。
- ユーザーが適用する推奨を選択すると、推奨は「保留」状態に切り替わります。
- この時点で、Index Advisorは負荷の制御測定を行い、インデックスを作成します。
- 最後の段階で、IAは再びパフォーマンスを測定し、インデックスを使用した操作の前より低い場合、操作はキャンセルされます。 「復帰」ステータスのインデックス。
図 1.-インデックスのプロパティ。その効果はマイナスでした。 「元に戻す」ボタンを押すと、操作を繰り返すことができます。
しばらくすると、データベースの負荷が変化し、新しいインデックスが必要になるか、古いインデックスが不要になります。 ユーザーはこのプロセスを何度も開始する必要があります。
オートパイロット
インデックスについて考えることに疲れている人のために、オートパイロット機能を作成しました-効果がマイナスであることが判明した場合、自動的に新しい推奨事項を適用し、変更をロールバックします。
図 2.-インデックスアドバイザーの設定で自動操縦を有効にできます
図 3.-完了した操作のプロパティには、それを開始したユーザー(ユーザーまたは自動操縦)が表示されます。
「あなたを産んだ、あなたを殺す」
インデックスアドバイザーは、テレメトリとデータベースの負荷を常に監視します-もはや有益ではない、または他のインデックスによって重複しているインデックスを検出した場合、削除することを提案します。
たとえば、内部テストの段階で、72個の同一のインデックスを持つデータベースが見つかりましたが、これは単にスペースを占有していました。 これは、サードパーティのインデックス管理プログラムが正常に機能しなかったためです。
インデックスを削除するには、Index Advisorの際立った機能がさらに重要になります。 インデックスストアは、クエリストアを使用することで、インデックスの作成または削除の効果を把握しています。 それが否定的であることが判明した場合、アシスタントは自動的に元の状態に戻ります。
追加の通知
毎日何千もの推奨事項を公開しています。 それらがすべて適用されると、SQL Azure全体および顧客のパフォーマンスが大幅に向上します。 したがって、これらの推奨事項をできるだけ早くユーザーに伝えるようにします。
最初のステップは、データベース画面のステータスバーです。
アクティブな推奨事項がある場合、新しいAzureポータルにアクセスすると、それらを適用するように促す通知が表示されます。 近い将来、インデックスアドバイザで推奨事項が利用可能になったことを定期的に通知する予定です。
これはデマではありません! うまくいく
インデックスを作成または削除すると、操作のプロパティでデータベースパラメータがどのように変更されたかを確認できます。
これを行うには、正常に終了した操作を選択し、Query Insightsを実行します。
ご覧のとおり、インデックスは6日に作成され、DTUの総消費量は80から40%に減少し、リクエストによるCPU消費量は減少しました。 (改善は必ずしも重要ではありませんが、常に改善されます)
偶然? そうは思いません Query Performance Insightはそれ自体が便利なツールであり、次の記事で説明します。
推奨事項がないのはなぜですか?
現時点では、データベースに追加のインデックスが必要ない場合があります。 その後、インデックスアドバイザーは、推奨事項がないことを説明するメッセージを表示します。 理由は次のとおりです。
- データベースを分析しましたが、追加または削除するものは何もありません(すばらしい開発者です!)。
- 信頼できる推奨事項に十分なデータがありません。 これにはいくつかの理由があります。
- データベース構造を変更することはできません(たとえば、読み取り専用としてマークされている場合)。
- 現時点では、データベースのインデックスを変更するために他の操作が開始されています(計画されたすべての変更が完了した後、新しい推奨事項が表示される場合があります)。
- Index Advisorには休みがあります(そしてそれは起こります)。
リストは時間の経過とともに変化する可能性がありますが、常に特定の理由を提示しようとします。
その他
次のような小さな変更:
- 推奨事項を手動で実行するためのスクリプトのフィールドでの構文の強調表示(インデックスの詳細->「スクリプトの表示」);
- 推奨事項の適用が失敗した場合、理由は推奨事項のプロパティに示されます。
新しい推奨モデル
ご想像のとおり、インデックスの管理は最初のステップにすぎません。 時間が経つにつれて、アドバイザを新しいヒントやコツで拡張したいと考えています。
最初にプレビューとして起動され、ドロップインデックスなどのアスタリスクでマークされます。
まとめ
インデックスアドバイザーは現在GAステージにあり、不足しているインデックスを見つけるのに役立ち(不要なインデックスを削除することをお勧めします)、データベースのパフォーマンスを向上させます。
インデックスアドバイザの自動操縦をオンにすると、インデックス管理を忘れることができます。クラウドがすべてを行います。
フィードバック
- 経験豊富なDBAや新しいCode-first開発者の意見やコメントを聞くのは本当にクールでしょう。 ここからディスカッションを開始できます。
- インデックスアドバイザーページには、特定のインデックスについて意見を述べることができる[フィードバック]ボタンがあります。
- SQL Server / SQL Azureチームに挨拶したい: anant@microsoft.com正しい受信者を見つけようとします。
2番目の部分では、クエリパフォーマンスインサイトを見ていきます。これは、データベース内でTOP-10の最も大食いなクエリを表示するツールです。
著者について
アンドレイ・アンチュフェエフ
Microsoft SQL ServerおよびAzure SQL Database Program Manager
シトックス