低速SQLクエリは、ApsaraDB RDS for MySQLインスタンスの安定性に大きく影響します。 RDSインスタンスで高負荷やパフォーマンスのジッターなどの問題が発生した場合、管理者または開発者はまず、低速SQLクエリが実行されているかどうかを確認します。 Database Autonomy Service (DAS) では、低速のクエリログ分析機能を使用できます。 この機能は、RDSインスタンスで実行される低速SQLクエリの統計を収集して分析し、パフォーマンスの問題を特定し、問題の解決策を提供します。 これにより、システムの安定性と信頼性が向上します。
前提条件
RDSインスタンスはMySQLを実行します。
RDSインスタンスはRDS Basic Editionを実行していません。
使用上の注意
SQL文のサイズが8,192バイトを超える場合, SQL文を記録できません。
手順
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションウィンドウで、自律型サービス (CloudDBA)>低速 SQLを選択します。
低速クエリログ分析タブで、時間範囲を指定し、指定された時間範囲内の低速クエリログの低速クエリログの傾向,低速クエリログの統計、および低速クエリログの詳細を表示します。
説明時間範囲を指定する場合、終了時刻は開始時刻より後である必要があり、開始時刻と終了時刻の間隔は24時間を超えることはできません。 1か月以内に低速クエリログをクエリできます。
トレンドチャートのある時点をクリックして、その時点での低速SQLクエリに関する統計と詳細を表示できます。低速クエリログの傾向低速クエリログの統計低速クエリログの詳細
低速クエリログのエクスポート をクリックして、スロークエリログをダウンロードします。
重要最大1,000個のスロークエリログをエクスポートできます。 すべてのスロークエリログを取得する場合は、DescribeSlowLogRecords操作を呼び出します。
低速クエリログの統計 タブで、次の手順を実行します。
管理するSQLテンプレートの 操作 列で サンプル をクリックし、スロークエリログの詳細を表示します。低速クエリログサンプル
管理するSQLテンプレートを見つけて、操作 列の 最適化 をクリックします。 SQL 診断の最適化 ダイアログボックスで、SQL診断の結果を表示します。
SQL最適化の提案を受け入れる場合は、右上隅の コピー をクリックし、最適化されたSQL文をデータベースクライアントまたはデータ管理 (DMS) に貼り付けて実行します。 SQL最適化の提案を受け入れない場合は、Cancel をクリックします。
説明DASは、SQL文の複雑さ、テーブル内のデータ量、およびインスタンスのワークロードに基づいてSQL診断を実行します。 SQL診断が実行されてから20秒以上後に提案が返されることがあります。 診断が完了すると、SQL診断エンジンは診断結果、最適化の提案、および期待される最適化の利点を提供します。 診断結果に基づいて、提案を受け入れるかどうかを決定できます。
[Database Expert Service] をクリックして、エキスパートサービスを購入することもできます。 Database Expert Serviceは、緊急支援、健康診断、パフォーマンスチューニング、セキュリティ保証、データ移行など、付加価値のあるプロフェッショナルなデータベースサービスを提供します。
管理するSQLテンプレートを見つけて、操作 列の スロットリングを実行してください。 をクリックします。 SQL スロットリング ダイアログボックスで、パラメーターを設定します。 詳細については、「SQLスロットリング」をご参照ください。
低速クエリログの詳細 タブで、管理するSQL文を見つけ、操作 列の 最適化 または スロットリングを実行してください。 をクリックして、SQL診断最適化またはSQLスロットリングを実行します。SQL 診断の最適化SQL スロットリング
追加情報
次の項目は、スロークエリログ分析機能の主要な指標です。
最大スキャン行数: スロークエリログ統計の指標の1つ。 メトリックは、クエリ時間範囲内で低速クエリでスキャンされる行の最大数を示します。
SQLテンプレート: 同じ型のSQL文に対して生成されるSQLテンプレート。
低速SQLサンプル: SQLテンプレートから定期的にサンプリングされるデータ。 サンプル統計は、すべての低速クエリログをカバーできません。 詳細については、「ApsaraDB RDS For MySQLインスタンスの低速クエリログの詳細の表示」をご参照ください。
スローログの詳細: スロークエリの詳細。 スロークエリログ分析機能は、デフォルトで有効になっています。 実行期間が
long_query_time
パラメーターの値より長いSQL文がApsaraDB RDSコンソールに表示されます。ApsaraDB RDS for MySQLでは、log_queries_not_using_indexesパラメーターを有効にして、インデックスを使用しないSQLクエリを記録できます。 詳しくは、「 https://dev.mysql.com/doc/refman/8.0/en/slow-query-log.html 」をご参照ください。
よくある質問
Q: スロークエリログに記録されたSQL文の実行完了時間が、実際のSQL文の実行完了時間と異なるのはなぜですか。
A: この問題は通常、低速クエリログに記録されたタイムゾーンが実行されたSQL文によって変更されたときに発生します。 SQL文の実行完了時間は, スロークエリログに記録されているタイムゾーンによって異なります。セッションレベル, データベースレベル, システムレベルです。 データベースにタイムゾーンが指定されている場合、SQL文の実行完了時刻はデータベースのタイムゾーンに基づいて記録されます。 それ以外の场合は, システムのタイムゾーンに基づいてSQL文の実行完了时间が记录されます。 SQL文がセッションレベルでタイムゾーンを変更すると、スロークエリログに記録されたタイムゾーンが適切に変換されない可能性があります。
関連ドキュメント
RDSインスタンスで低速のSQLクエリが検出された場合、DASの自律機能を有効にして自動最適化を実装できます。