RT,在遇到一个运行很慢SQL的情况下,如何进行分析、优化、测试?简单说明一下步骤思路;
人生最曼妙的风景,竟是内心的淡定与从容!
どの SQL が遅いかわからない場合は、mysql の遅いクエリ ログを有効にします。 記録されたログ ファイルを表示するには、mysql インストール ディレクトリの下の bin ディレクトリで mysqldumpslow を使用します。 具体的なコマンドは mysqldumpslow -s c -t 10 /path/to/slow.log です。 遅いSQL文の上位10パターンを抽出できます。 このようにして、どのステートメントが遅いかを見つけることができます。
発見後に分析する最も簡単な方法は、実行計画を説明して表示することです。 たとえば、explain select * from t where xxx order by xxx。
Explain 結果を表示すると、インデックスの使用状況、ソート方法などが確認できます。具体的な結果については、mysql の公式ドキュメントで Explain コマンドの説明を確認するのが最善です。
最適化の最も重要な手段は、インデックスが正しく設定されていることを確認することです。 インデックスに最適化の余地がない場合は、テーブルの構造設計に無理があるか、クエリメソッドの組み合わせに無理がある可能性があります。 これには、特定のビジネスに基づいてデータ ストレージ構造またはプログラム アーキテクチャを最適化する必要があります。
MySQL の Explain コマンドは、返されたコンテンツに基づいてクエリ効率を分析できます。 mysql 低速クエリ ログを有効にすると、比較的クエリ速度が遅い SQL ステートメントもログに記録されます。
どの SQL が遅いかわからない場合は、mysql の遅いクエリ ログを有効にします。 記録されたログ ファイルを表示するには、mysql インストール ディレクトリの下の bin ディレクトリで mysqldumpslow を使用します。 具体的なコマンドは mysqldumpslow -s c -t 10 /path/to/slow.log です。 遅いSQL文の上位10パターンを抽出できます。 このようにして、どのステートメントが遅いかを見つけることができます。
発見後に分析する最も簡単な方法は、実行計画を説明して表示することです。 たとえば、
explain select * from t where xxx order by xxx。
Explain 結果を表示すると、インデックスの使用状況、ソート方法などが確認できます。具体的な結果については、mysql の公式ドキュメントで Explain コマンドの説明を確認するのが最善です。
最適化の最も重要な手段は、インデックスが正しく設定されていることを確認することです。 インデックスに最適化の余地がない場合は、テーブルの構造設計に無理があるか、クエリメソッドの組み合わせに無理がある可能性があります。 これには、特定のビジネスに基づいてデータ ストレージ構造またはプログラム アーキテクチャを最適化する必要があります。
MySQL の Explain コマンドは、返されたコンテンツに基づいてクエリ効率を分析できます。 mysql 低速クエリ ログを有効にすると、比較的クエリ速度が遅い SQL ステートメントもログに記録されます。