低速 SQL クエリはアプリケーションのパフォーマンスを低下させる可能性があり、手動での診断が困難なことがよくあります。Database Autonomy Service (DAS) は、ApsaraDB RDS for MySQL インスタンス内の低速 SQL クエリを自動的に特定し、インデックス最適化の推奨事項を生成し、テーブルロックを引き起こすことなくインデックスを作成することで、手動による介入を減らします。
通常の SQL クエリと低速 SQL クエリの両方が存在するインスタンスで自動 SQL 最適化を有効にすると、インスタンス全体のパフォーマンスが低下する可能性があります。最適化を異常なクエリのみに限定するには、まず SQL エクスプローラーと監査を有効にしてください。詳細については、「SQL エクスプローラーと監査機能の使用」をご参照ください。
前提条件
開始する前に、お使いの RDS インスタンスが次のいずれかの MySQL バージョンおよびエディションを実行していることを確認してください。
-
MySQL 8.0: RDS 高可用性版、RDS エンタープライズ版、または RDS クラスター版、RDS エンタープライズ版、
-
MySQL 5.7 の RDS 高可用性版、RDS エンタープライズ版、または RDS クラスター版、RDS エンタープライズ版、
-
High-availability Edition での MySQL 5.6
-
High-availability Edition での MySQL 5.5
自動 SQL 最適化機能は、X-Engine を使用するテーブルを含む SQL クエリをサポートしていません。
仕組み
DAS は、ネイティブの MySQL カーネルがサポートするオンライン DDL ステートメントを使用してインデックスを作成します。これにより、通常のインデックス作成で発生しうるテーブルロックを回避します。詳細については、「SQL 最適化技術」をご参照ください。
DAS は 2 つのモードで実行されます。
| モード | DAS の動作 |
|---|---|
| [SQL 診断のみ] | 毎日 SQL 診断を実行し、インデックス最適化の推奨事項を生成します。インデックスは作成しません。 |
| [SQL 診断と自動インデックス作成] | 毎日 SQL 診断を実行し、インデックス最適化の推奨事項を生成し、それらの推奨事項に基づいてインスタンスのメンテナンスウィンドウ内にインデックスを作成します。 |
自動 SQL 最適化の有効化
-
[インスタンス] ページに移動します。上部メニューで、お使いの RDS インスタンスのリージョンを選択します。対象のインスタンスを見つけ、その ID をクリックします。
-
左側メニューで、[自律サービス] > [診断] を選択します。表示されたページで、[自律センター] タブをクリックし、[自律サービス設定] をクリックします。
-
[自律機能設定] タブで、自律サービスを有効にします。[最適化とスロットリング] タブで、[自動インデックス作成と削除] を選択し、モードを選択します。
-
[SQL 診断のみ]: DAS は毎日 SQL を診断し、インデックス最適化の推奨事項を生成します。インデックスは作成されません。
-
[SQL 診断と自動インデックス作成]: DAS は毎日 SQL を診断し、インデックス最適化の推奨事項を生成し、メンテナンスウィンドウ内に自動的にインデックスを作成します。
-
-
[OK] をクリックします。
-
(任意) [アラート設定] セクションで、アラートテンプレートを設定して、自動 SQL 最適化タスクに関する通知を受け取れるようにします。システムはアラートテンプレートを推奨し、必要な自律イベントのアラートルールを追加します。プロンプトに従って設定してください。このインスタンスにすでにアラートテンプレートが設定されている場合は、必要な自律イベントのアラートルールをその既存のテンプレートに追加してください。まだ設定していない場合は、「アラートテンプレートの設定」および「アラートルールの設定」をご参照ください。
-
[アラート連絡先グループの選択] ステップで、アラート連絡先グループを選択してください。詳細については、「アラート連絡先の管理」をご参照ください。
-
[連絡先の追加] をクリックして、アラート連絡先を追加してください。
-
[連絡先グループの作成] をクリックして、アラート連絡先グループを作成してください。
-
既存の連絡先を更新または削除するには、リストで対象の連絡先を見つけ、[操作] 列の [編集] または [削除] をクリックしてください。
-
-
[リソースとの関連付け] ステップで設定を確認してください。
-
[設定の送信] をクリックし、ダイアログボックスで確認してください。
-
最適化結果の表示
[自律センター] タブで、指定した時間範囲内の最適化イベントを表示します。
確認したいイベントを見つけ、[詳細] をクリックしてください。[低速 SQL ステートメント診断 (診断と最適化)] イベントの [根本原因分析と提案] タブで、以下を表示できます。
-
[問題のある SQL ステートメント]
-
[SQL ステートメントの最適化]
-
[インデックスの推奨]
-
[ステートメントの最適化]
次のステップ
特定の SQL ステートメントを手動で最適化するには、「SQL 最適化」をご参照ください。
関連 API
| 操作 | 説明 |
|---|---|
| UpdateAutoSqlOptimizeStatus | 一度に複数のデータベースインスタンスに対して自動 SQL 最適化を有効化、変更、または無効化します。 |
| GetSqlOptimizeAdvice | SQL 診断によって生成されたインデックス最適化の推奨事項を照会します。 |
| GetInstanceSqlOptimizeStatistic | 一定期間内の自動 SQL 最適化イベントに関する統計 (総イベント数や最大改善率など) を照会します。 |