Database Autonomy Service (DAS) は、実行時間が指定されたしきい値を超える SQL ステートメントを収集・分析し、最適化の提案を提供することで、スロークエリの問題を迅速に特定・解決するサポートを行います。
動画による紹介
前提条件
-
データベースエンジンは以下のいずれかである必要があります。
-
RDS for MySQL、PolarDB for MySQL、MyBase for MySQL、またはセルフマネージド MySQL
-
RDS for SQL Server または MyBase for SQL Server
-
RDS for PostgreSQL または PolarDB for PostgreSQL
-
Tair (Redis 互換)、またはセルフマネージド Redis
-
PolarDB for PostgreSQL (Oracle-compatible)
-
PolarDB-X 2.0
-
ApsaraDB for MongoDB またはセルフマネージド MongoDB
重要-
スロークエリログの詳細情報はすべてのリージョンで利用可能ですが、リアルタイムのスロークエリログ統計は中国本土、中国 (香港)、シンガポール、マレーシア (クアラルンプール)、インドネシア (ジャカルタ)、日本 (東京)、ドイツ (フランクフルト)、イギリス (ロンドン)、米国 (シリコンバレー)、および米国 (バージニア) のリージョンでのみ利用可能です。
-
新しいスロークエリログページは、自己管理データベースインスタンスをサポートしていません。
-
-
対象のデータベースインスタンスが DAS に接続されている必要があります。詳細については、「データベースインスタンスを DAS に接続する」をご参照ください。
背景情報
スロークエリログはデータベースエンジンのカーネルによって生成されます。設定パラメーターおよびしきい値はエンジンごとに異なります。詳細については、ご利用のデータベースエンジンの公式ドキュメントをご確認ください。
単一インスタンスのスロークエリログ
このセクションでは、RDS for MySQL データベースインスタンスを例として説明します。
DAS コンソールにログインします。
左側のナビゲーションウィンドウで、 をクリックします。
対象のインスタンスを見つけ、インスタンス ID をクリックしてインスタンス詳細ページを開きます。
-
左側のナビゲーションウィンドウで、リクエスト分析 > 低速クエリログ をクリックします。
-
スロークエリログ分析 タブで、期間を選択すると、その期間の スロークエリログの傾向、イベント配信、スロークエリログの統計、および スロークエリログの詳細 を表示できます。
説明終了時刻は開始時刻より後である必要があり、期間は 7 日を超えてはいけません。過去 1 ヶ月分のスロークエリログをクエリできます。
-
スロークエリログの傾向 チャートで、特定の時点を選択すると、対応する スロークエリログの統計 および スロークエリログの詳細 を表示できます。
説明スロークエリ文が長すぎて完全に表示されない場合は、その文にカーソルを合わせると、ツールチップに全文が表示されます。
-
をクリックして、スロークエリログ情報をローカルに保存します。 -
をクリックして、現在のパラメーターが事前に入力された状態で OpenAPI Explorer を開き、API デバッグを行います。 -
[イベント配信]セクションで:
指定した時間範囲内でスロークエリログイベントを検索できます。イベントをクリックして、その詳細を表示します。
-
[スロークエリログの統計]セクションで:
-
リストの上部でフィルターを選択してデータを絞り込めます。利用可能なフィルターはデータベースエンジンによって異なります。
-
SQL ID 列の SQL テンプレートの ID をクリックすると、ユーザー分布、クライアント分布、メトリクスの傾向など、相関分析と詳細情報を表示できます。
-
SQL テンプレートの 操作 列で 最適化 をクリックします。SQL 診断の最適化 ダイアログボックスで、SQL 診断結果を確認します。
提案内容を採用する場合は、右上隅の コピー をクリックし、最適化された SQL をデータベースクライアントまたは DMS に貼り付けて実行してください。採用しない場合は、Cancel をクリックしてダイアログを閉じてください。
説明DAS は、ステートメントの複雑さ、関連テーブルのデータ量、および現在のデータベース負荷に基づいて SQL 診断を実行します。診断には 20 秒以上かかる場合があります。完了後、DAS は最適化の提案と推定されるパフォーマンス向上率を提供します。
-
SQL テンプレートの 操作 列で スロットリングを実行してください。 をクリックします。SQL スロットリング ページで、対象 SQL の速度制限パラメーターを設定します。詳細については、「SQL スロットリング」をご参照ください。
-
PolarDB for MySQL データベースインスタンスの場合、SQL テンプレートの 操作 列で IMCI をクリックすると、インメモリー列指向インデックス (IMCI) のドキュメントを表示できます。
説明-
IMCI ボタンは、PolarDB for MySQL インスタンスにインメモリー列指向インデックスノードが存在せず、かつスロークエリが次の 2 つの条件を満たす場合に表示されます:最大実行時間 が 20 秒を超え、かつ スキャンされた最大行数 が 200,000 行を超える場合です。
-
大規模なデータセットに対する複雑なクエリでは、インメモリー列指向インデックス (IMCI) を使用してクエリパフォーマンスを向上させることを推奨します。
-
-
-
スロークエリログの詳細 セクションでも、対象 SQL ステートメントの 操作 列で 最適化 および スロットリングを実行してください。 をクリックして、SQL 診断の最適化 を実行したり、SQL スロットリング を適用したりできます。
-
グローバルスロークエリログ
複数のデータベースインスタンスをお持ちの場合は、グローバル低速クエリログの傾向 ページに移動し、選択したエンジンの全体的なスロークエリログ傾向と上位 10 インスタンスのスロークエリログ統計を確認できます。
グローバルスロークエリログ傾向機能は、中国本土の RDS for MySQL、MyBase for MySQL、および PolarDB for MySQL インスタンスでのみ利用可能です。
DAS コンソールにログインします。
-
左側のナビゲーションウィンドウで、インテリジェント O&M センター > 低速クエリログ をクリックして、グローバル低速クエリログの傾向 および Top インスタンス統計 を表示します。
説明終了時刻は開始時刻より後である必要があります。過去 14 日間のデータをクエリできます。
よくある質問
-
Q: RDS for MySQL および PolarDB for MySQL インスタンスにおいて、スロークエリログに記録された完了時刻が実際の SQL 実行時間と異なるのはなぜですか?
A: これは通常、セッションレベルの SQL ステートメントでタイムゾーンが変更された場合に発生します。スロークエリログはデフォルトでデータベースのタイムゾーンに基づいてタイムスタンプを記録します。データベースレベルのタイムゾーンが設定されていない場合は、システムのタイムゾーンが使用されます。接続後にセッションがタイムゾーンを変更した場合、ログに記録されたタイムスタンプが正しく変換されず、差異が生じることがあります。
-
Q: レガシースロークエリログページにはアクセスできるのに、新しいページにアクセスしようとすると権限エラー (NoPermission や Forbidden.RAM など) が発生するのはなぜですか?
A: 新しいスロークエリログページは、より高度なデータフィルタリング機能を使用しており、レガシーページとは異なる権限ポリシーが必要です。必要な権限がない場合、新しいページにアクセスできません。「RAM ユーザーへの権限付与」を参照し、以下の権限ポリシーを RAM ユーザーに付与してください。
-
必須権限:スロークエリログトレンドチャートデータ (
DescribeSlowLogHistogramAsync)、スロークエリログテンプレート統計 (DescribeSlowLogStatistic)、スロークエリログ詳細 (DescribeSlowLogRecords)、イベントセンターのデータ (GetInstanceEventWithGroupType)、およびパフォーマンストレンドデータ (GetPerformanceMetrics) -
推奨権限:SQL ステートメントのタグ付け (
CreateSqlTag) および SQL タグの取得 (DescribeDasQueryTagNames)
-