ApsaraDB RDS for MySQL の mysql.slow_log テーブルには、指定された実行時間のしきい値を超えた SQL 文が記録されます。これらのレコードはスロークエリとして知られています。これらのログを分析することで、パフォーマンスボトルネックを特定し、SQL 文を最適化してシステム全体のパフォーマンスを向上させることができます。このトピックでは、RDS for MySQL のスロークエリログの収集ポリシーについて説明し、その動作と使用方法をよりよく理解するためにログを表示する方法を説明します。
スロークエリログの収集ポリシー
RDS for MySQL は、logagent コンポーネントを使用して、mysql.slow_log テーブルから毎分スロークエリログを取得します。その後、ログは処理のためにバックエンドシステムに同期されます。同期後、logagent は TRUNCATE コマンドを使用して mysql.slow_log テーブルをクリアします。このプロセスにより、表領域の使用量が削減され、本番環境のパフォーマンスへの影響が回避されます。
スロークエリログの詳細の表示
方法 1: ログ管理ページで表示
ログ管理ページでは、スロークエリログの詳細表示のみがサポートされています。スロークエリログをエクスポートまたは分析するには、「方法 2: 低速 SQL ページでスロークエリログを表示する」をご参照ください。
方法 2: 低速 SQL ページで表示
低速 SQL ページでは、スロークエリログの表示とエクスポート、指定された実行時間のしきい値を超えた SQL 文の分析、および対応する管理ソリューションの検索ができます。これらのソリューションは、データベースのパフォーマンス問題を迅速に特定して解決し、システムの安定性と信頼性を向上させるのに役立ちます。
よくある質問
Q: RDS for MySQL データベースの slow_log テーブルが空なのはなぜですか? 収集後に毎分クリアされますか?
A: はい、その通りです。mysql.slow_log テーブルはシステムテーブルです。頻繁な書き込みおよびクエリ操作は、データベースのパフォーマンスに影響を与える可能性があります。このため、RDS はこのテーブルのデータを定期的にクリアして、表領域の使用量を削減し、本番環境のパフォーマンスへの影響を回避します。保持期間を手動で変更することはできません。DescribeSlowLogRecords - スローログ詳細の表示 API 操作を使用して、スロークエリログをバッチで取得できます。1 回のエクスポートがログ数によって制限される場合は、操作を複数回実行してすべてのレコードを取得できます。
参考資料
Database Autonomy Service (DAS) の自動管理機能を有効にして、データベースインスタンスで発生した低速 SQL 文を自動的に最適化します。