Database Autonomy Service (DAS) は、PolarDB for MySQL インスタンスのスロークエリログを分析し、設定されたしきい値を超える実行時間の SQL ステートメントに関する統計を収集します。この機能を使用して、次のことを行えます。
傾向チャートとイベントのディストリビューションを使用した、パフォーマンス低下発生タイミングの特定
ユーザーディストリビューション、クライアントディストリビューション、メトリックの相関関係を含むテンプレートごとの集約を使用した、最も影響の大きい SQL パターンの検出
根本原因の診断と、改善の見積もり付きの最適化提案の適用
修正作業中の、ワンクリックでの速度制限による暴走クエリの即時制限
前提条件
開始する前に、次のものがあることを確認してください。
PolarDB for MySQL インスタンス
PolarDB for MySQL Enterprise Edition Single Node Edition はサポートされていません。
背景情報
スロークエリログはデータベースカーネルによって生成されます。関連するパラメーターとしきい値は、データベースエンジンによって異なります。詳細については、対応する公式ドキュメントをご参照ください。
スロークエリログの表示
DAS コンソールにログインします。
左側のナビゲーションウィンドウで、[インテリジェント O&M センター] > [インスタンス監視] を選択します。
管理したいインスタンスを見つけ、そのインスタンス ID をクリックします。
左側のナビゲーションウィンドウで、[リクエスト分析] > [スローログ] を選択します。
[スローログ分析] タブで、時間範囲を設定します。
説明終了時刻は開始時刻より後である必要があります。間隔は 24 時間を超えることはできません。前月のログを照会できます。
以下で説明する 4 つのセクションのデータを確認します。
スロークエリログの傾向
傾向チャートには、時間経過に伴うスロークエリ数が表示されます。このビューを使用して、パフォーマンス問題が発生した時点を特定します。チャート上の任意のポイントをクリックすると、その時点の統計と詳細が表示されます。
GUI で SQL ステートメントが長さ制限のために切り捨てられている場合は、その上にカーソルを合わせると全文が表示されます。
イベントのディストリビューション
このセクションには、選択した時間範囲内のスロークエリイベントが一覧表示されます。このビューを使用して、個々のイベントを閲覧し、パフォーマンスの低下を特定のタイムウィンドウと関連付けます。イベントをクリックすると、その詳細が表示されます。
このセクションから、次のことも実行できます。
[ノード ID] ドロップダウンリストからノードを選択して、ノード別にスロークエリをフィルターします。
をクリックして、スロークエリログをダウンロードします。
をクリックして、現在のパラメーターを OpenAPI コンソールに入力し、API デバッグを行います。
スロークエリログの統計
このタブを使用して、どの SQL テンプレートが最もパフォーマンス低下を引き起こしているかを特定し、それらに対してアクションを実行します。リストはステートメントをテンプレートごとに集約するため、個々の実行ではなく、総影響でランク付けできます。
リストの上部でフィルター条件を設定します。利用可能なフィルターはデータベースエンジンによって異なります。
[SQL ID] をクリックすると、そのテンプレートのユーザーディストリビューション、クライアントディストリビューション、およびメトリックトレンドの詳細を表示できます。
[操作] 列の [最適化] をクリックして、[SQL 診断と最適化] ダイアログボックスを開きます。DAS は、ステートメントの複雑さ、テーブルのデータ量、データベースの負荷に基づいて SQL を評価します。診断の提案が表示されるまでに 20 秒以上かかる場合があります。診断が完了すると、結果には最適化の提案と期待される改善の見積もりが含まれます。提案を適用するには、右上隅の [コピー] をクリックし、最適化された SQL をデータベースクライアントまたは Data Management (DMS) に貼り付けて実行します。提案を破棄するには、[キャンセル] をクリックします。
[操作] 列にある [スロットリング] をクリックすると、[SQL スロットリング] ダイアログボックスが開きます。構成の詳細については、「SQL スロットリング」をご参照ください。
PolarDB for MySQL クラスターの場合、[操作] 列の [IMCI] をクリックして、インメモリ列指向インデックス (IMCI) 機能のドキュメントを表示します。
説明[IMCI] ボタンは、クラスターに IMCI ノードが購入されていない、SQL テンプレートの最大実行時間が 20 秒を超えている、スキャンされた行の最大数が 200,000 を超えている、という 3 つの条件がすべて満たされた場合にのみ表示されます。IMCI を使用して、大規模なデータセットに対する複雑なクエリのパフォーマンスを向上させます。
スロークエリログの詳細
このタブには、個々の SQL 実行が一覧表示されます。このビューは、テンプレート パターンではなく特定の文を調査する場合に使用します。[アクション] 列の [最適化] または [速度制限] をクリックして、特定の文に対して SQL 診断を実行するか、速度制限を設定します。
よくある質問
スロークエリログの実行完了時刻が実際の時刻と異なるのはなぜですか?
これは通常、SQL ステートメントがセッションレベルのタイムゾーンを変更した場合に発生します。DAS は、セッションレベル > データベースレベル > システムレベルの優先順位でアクティブなタイムゾーンに基づいて実行完了時刻を記録します。ステートメントがセッションのタイムゾーンを変更すると、記録されたタイムスタンプが期待されるローカルタイムを反映しない場合があります。
次のステップ
DAS の自律機能を有効にして、検出されたスロークエリを自動的に処理します: