スロークエリログは、データベースの安定性を著しく損なう可能性があります。データベースが高負荷状態やパフォーマンスの変動に直面した場合、DBA や開発者は通常、まずスロークエリの有無を確認します。Database Autonomy Service (DAS) は、設定された実行時間しきい値を超える SQL ステートメントを収集・分析し、対応に必要な情報を提供します。
選択した期間におけるスロークエリの傾向
SQL テンプレートごとに集計された統計情報(実行回数、実行時間、スキャン行数などのメトリックを含む)
根本原因分析のための個別ステートメント詳細
ワンクリックによる SQL 診断(最適化の提案および推定されるパフォーマンス向上効果を含む)
暴走クエリを制限するための SQL スロットリングへの直接アクセス
ビデオ紹介
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
データベースエンジンが、以下のいずれかである:
ApsaraDB RDS for MySQL、PolarDB for MySQL、MyBase for MySQL、またはセルフマネージド MySQL
ApsaraDB RDS for SQL Server または MyBase for SQL Server
ApsaraDB RDS for PostgreSQL または PolarDB for PostgreSQL
Tair (Redis OSS-compatible)、またはセルフマネージド Redis
PolarDB for PostgreSQL (Compatible with Oracle)
PolarDB-X 2.0
ApsaraDB for MongoDB またはセルフマネージド MongoDB
対象のデータベースインスタンスが DAS に接続されていること。詳細については、「データベースインスタンスを DAS に接続する」をご参照ください。
スロークエリログの詳細は、すべてのリージョンで利用可能です。リアルタイムのスロークエリログ統計は、以下のリージョンでのみ利用可能です:中国本土、中国 (香港)、シンガポール、マレーシア (クアラルンプール)、インドネシア (ジャカルタ)、日本 (東京)、ドイツ (フランクフルト)、イギリス (ロンドン)、米国 (シリコンバレー)、および米国 (バージニア)。新しい「スロークエリログ」ページでは、セルフマネージドデータベースインスタンスはサポートされていません。
スロークエリログの仕組み
スロークエリログは、クエリの実行時間が設定されたしきい値を超えた場合に、データベースカーネルによって生成されます。しきい値を制御するパラメーター名およびデフォルト値は、データベースエンジンによって異なります。正確なパラメーター名および構成手順については、使用中のデータベースエンジンの公式ドキュメントをご参照ください。
単一インスタンスのスロークエリログの表示
本セクションでは、ApsaraDB RDS for MySQL データベースを例として説明します。
DAS コンソール にログインします。
左側ナビゲーションウィンドウで、インテリジェント O&M センター > インスタンス監視 をクリックします。
対象インスタンスの ID をクリックして、インスタンス詳細ページに移動します。
左側ナビゲーションウィンドウで、リクエスト分析 > スローログ を選択します。
スローログ分析 タブで、期間を選択します。このタブには以下のセクションが表示されます:スロークエリログの傾向 時間経過に伴うスロークエリ件数を示すチャートです。チャート上のポイントをクリックすると、スロークエリログ統計 および スロークエリログ詳細 の表示範囲がその時点にフィルターされます。
をクリックして、スローログデータをローカルに保存します。
をクリックして OpenAPI Explorer を起動し、選択したパラメーターで API をデバッグします。
イベント分布 選択した期間内のスローログイベントです。イベントをクリックすると、その詳細を表示できます。スロークエリログ統計 SQL テンプレートごとに集計されたスロークエリデータです。各行には、実行回数、合計実行時間、平均実行時間、スキャン行数、返却行数などのメトリックが表示されます。リスト上部のフィルターを使用して結果を絞り込みます。利用可能なフィルター項目は、データベースエンジンによって異なります。スロークエリログ詳細 個別のスロークエリレコードです。操作 列で、特定のステートメントに対して SQL 診断を実行する場合は 最適化 を、スロットリングを構成する場合は スロットリング をクリックします。
SQL ID 列の SQL テンプレート ID をクリックすると、ユーザー分布、クライアント分布、メトリクスの傾向などの相関関係および分布詳細を表示できます。
操作 列で 最適化 をクリックして SQL 診断を実行します。DAS は、ステートメントの複雑度、関連テーブルのデータ量、およびデータベースのワークロードに基づいて診断を実行します。診断には 20 秒以上かかる場合があります。完了後、診断エンジンは診断結果、最適化の提案、および推定されるパフォーマンス向上効果を返します。> 注: スロー SQL ステートメントが長すぎて完全に表示されない場合は、マウスをそのステートメント上に合わせると、ダイアログボックス内で完全なステートメントを確認できます。
操作 列で スロットリング をクリックして、スロットリングルールの作成 ページを開き、SQL ステートメントのスロットリングパラメーターを構成します。詳細については、「SQL スロットリング」をご参照ください。
PolarDB for MySQL インスタンスの場合、以下のすべての条件が満たされたときに、[IMCI] ボタンが [操作] 列に表示されます:インスタンスにインメモリ列指向インデックス (IMCI) ノードが存在しないこと、スロークエリログの [最大実行時間] が 20 秒を超えていること、および [最大スキャン行数] が 200,000 を超えていることです。 [IMCI] をクリックすると、IMCI のドキュメントを表示し、大規模データセットに対する複雑なクエリのクエリパフォーマンスを向上させることができます。
終了時刻は開始時刻より後である必要があります。最大期間は 7 日間です。過去 1 か月以内に生成されたログを照会できます。
グローバルスロークエリログの表示
複数のデータベースインスタンスを管理している場合、グローバルスローログ傾向 ページでは、該当するすべてのインスタンスにおけるスロークエリ活動の概要および上位 10 インスタンスの統計情報を確認できます。
グローバルスローログ傾向機能は、中国本土リージョンの ApsaraDB RDS for MySQL、MyBase for MySQL、および PolarDB for MySQL インスタンスのみで利用可能です。
DAS コンソール にログインします。
左側ナビゲーションウィンドウで、インテリジェント O&M センター > スローログ へ移動します。ページには グローバルスローログ傾向 チャートおよび 上位インスタンス統計 が表示されます。
終了時刻は開始時刻より後である必要があります。過去 14 日以内に生成されたログを照会できます。
よくある質問
ApsaraDB RDS for MySQL および PolarDB for MySQL インスタンスにおいて、スロークエリログに記録された完了時刻が、実際の SQL 実行時間と異なるのはなぜですか?
これは、SQL ステートメントがセッションのタイムゾーンを変更した場合に発生します。スロークエリログのタイムスタンプは以下のロジックに従います:データベースレベルのタイムゾーンが設定されている場合は、そのタイムゾーンが適用されます。それ以外の場合は、システムタイムゾーンが適用されます。SQL ステートメントによって行われたセッションレベルのタイムゾーン変更は、スロークエリログのレコードには正しく反映されない場合があります。
古いスロークエリログページではアクセスできていたのに、新しいページで NoPermission エラーまたは Forbidden.RAM エラーが発生するのはなぜですか?
新しいページは、古いページとは異なる RAM 操作のセットを使用します。RAM ユーザーに次の権限を付与してください。手順については、「RAM ユーザーの権限付与」をご参照ください。
必須権限:
| 権限 | 説明 |
|---|---|
DescribeSlowLogHistogramAsync | スローログ傾向チャートのデータ |
DescribeSlowLogStatistic | スローログテンプレート統計 |
DescribeSlowLogRecords | スロークエリログの詳細 |
GetInstanceEventWithGroupType | イベントセンターのデータ |
GetPerformanceMetrics | パフォーマンストレンドデータ |
推奨権限:
| 権限 | 説明 |
|---|---|
CreateSqlTag | SQL ステートメントにタグを付ける |
DescribeDasQueryTagNames | SQL タグを取得する |
次のステップ
手動介入なしでスロー SQL ステートメントを処理するために、DAS の自動管理機能を有効化します。