遅いクエリーのインデックス提案
インデックス提案エンジン (ISE) は、選択された遅いクエリーのインデックス提案を生成できます。遅いクエリーのインデックス提案を要求すると、ISE はクエリーを分析し、クエリーの実行時間を改善できるインデックスを推奨します。
新しいインスタンスやアップグレードされたインスタンスでは、Index Suggestion Engine プラグイン (com.glide.index_suggestion) はデフォルトでアクティブ化されています。
注:
ISE は MySQL データベースのみをサポートしています。
アドミニストレーター は、次の目的で ISE を使用します。
- 遅いクエリーのインデックス提案を生成します。
- インスタンス内の遅いクエリーのインデックス提案を確認します。
- 評価とテストのために、インデックス提案を非本番インスタンスにエクスポートします。
- インデックスの作成をスケジュールします。
- インデックス評価期間中にインデックスの有効性を監視します。
- インデックスのパフォーマンスをテストします (このテストは即時のインデックスのパフォーマンスアセスメントです)。
- ISE で推奨されているように、クエリーのパフォーマンスを最適化しないインデックスを削除します。
インデックス提案を使用してインデックスを作成する場合、ISE は 14 日間の評価期間中に、そのインデックスの有効性を継続してチェックします。ISE は、インデックスの管理に関する推奨事項などのインデックスの詳細を評価中に提供します。
インデックスの提案の仕組み
インデックス提案プロセスを開始するには、選択した遅いクエリーのインデックス提案を要求します。ISE は、遅いクエリーのテーブルから列の統計情報を収集する日次ジョブを実行し、カーディナリティ (テーブル内の一意の列) や null/null 以外の数などのデータを収集します。
次に、ISE は収集された情報を集計して分析し、重み付けされた列ランキングアルゴリズムを遅いクエリーに適用して、クエリーのインデックス提案を生成します。
インデックス提案が生成されたら、ユーザーは提案を確認し、遅いクエリーのインデックスを作成するかどうかを決定します。インデックスを作成すると、インデックスがライフサイクルを移動するときに、ISE からそのインデックスに関する情報が提供されます。インデックス提案は、次の 3 つの主な処理ステージで追跡できます。
- インデックス提案の確認
- この最初のステージでは、遅いクエリーに対して ISE で生成されたインデックス提案を確認できます。提案を無視するか、インデックス提案をさらにテストするために非本番インスタンスにエクスポートするか、インデックスの作成をスケジュールするかを選択できます。ISE がインデックス提案を正常に生成し、インデックスの作成をスケジュールすることを選択した場合、インデックス提案は次の処理ステージに移動します。ただし、データベースが提案を使用できない場合、または提案によってクエリーのパフォーマンスが低下する場合、ISE はインデックス提案の削除を推奨します。
- インデックス処理中
- このステージでは、ISE がインデックスを作成し、14 日間の評価期間が開始されます。ISE は 1 時間おきに評価を実行し、インデックスによってクエリーの実行時間が改善または悪化するのかを判断します。ISE は、実行可能な推奨アクションなど、インデックスのステータスを更新します。たとえば、インデックスによって遅いクエリーのパフォーマンスが改善されない場合は、インデックスを削除するようにアドバイスされます。その後、データベースからのインデックス削除をスケジュールできます。このステージでは、インデックスのパフォーマンスをテストするか、インデックスを受け入れるかも選択できます (ISE がインデックスの削除を推奨する場合も含む)。
- インデックス完了
- 最後の処理ステージでは、インデックスと関連する処理アクティビティの最終状況が ISE で記述されます。インデックスによって遅いクエリー時間が改善された場合は、インデックスのステータスが [作成済み] に変更され、データベースは引き続きインデックスを使用します。インデックスによってクエリー時間が改善されず、インデックスの削除を選択した場合は、ISE によってそのインデックスがデータベースから削除され、インデックスのステータスが [削除済み] に変更されます。
インデックス提案の処理状況
インデックス提案 [sys_index_suggestion] テーブルには、インデックスが次の 3 段階の主要な処理ステージを移動する際のステータス情報があります。
- インデックス提案 > レビューへ
- インデックス提案 > 処理中
- インデックス提案 > 完了
ISE では、次の状況を使用してインデックスの処理アクティビティを記述します。
| 状況 | 説明 |
|---|---|
| インデックス提案の確認 | |
| 提案済み | ISE が遅いクエリーのインデックス提案を生成しました。 |
| 提案された削除 - 未使用 | データベースでは遅いクエリーにインデックスが使用されていないため、ISE はインデックスの削除を推奨します。 |
| 提案された削除 - パフォーマンス低下 | インデックスによってクエリー時間が改善されない、またはパフォーマンスが低下するため、ISE はこのインデックスの削除を推奨します。 |
| インデックス処理中 | |
| スケジュール済みの作成 | インデックスの作成をスケジュール設定しました。 |
| 作成中 | ISE がインデックスを作成しています。 |
| 作成に失敗しました | ISE はインデックスを作成できませんでした。 |
| 有効性の評価 | ISE はインデックスを作成し、14 日間のインデックス評価期間中にインデックスのパフォーマンスを評価します。 |
| 提案された削除 - 未使用 | データベースでは遅いクエリーにインデックスが使用されていないため、ISE はインデックスを作成したテーブルからのこのインデックスの削除を推奨します。 |
| 提案された削除 - パフォーマンス低下 | インデックスによってクエリー時間が改善されなかったため、ISE はこのインデックスの削除を推奨します。 |
| スケジュール済みの削除 | データベースからのインデックス削除をスケジュール設定しました。 |
| 削除中 | ISE はデータベースからインデックスを削除しています。 |
| 削除に失敗しました |
インデックスを削除できませんでした。カスタマーサービス & サポートにサポートを依頼してください。 |
| インデックス完了 | |
| 作成日時 | 14 日間の評価期間の後に、ISE はインデックスによりクエリーのパフォーマンスが改善されたと判断されました。データベースがインデックスを引き続き使用することを示します。 |
| 無視 | インデックスの提案を無視することを選択しました。 |
| 削除済み | ISE はインデックスを正常に削除しました。 |
| 受入済み | ISE からはインデックスの削除が推奨されましたが、インデックスを保持することを選択しました。 |
| 優先 | 最近のインデックス提案によって、同じテーブルと遅いクエリーのインデックスが置き換えられました。 |