mysqlの期間とフェッチ時間


83

MySQLワークベンチを使用しています-クエリが実行されるときの継続時間とフェッチ時間の違いは何ですか?

また、MySQLでマイクロ秒オプションを有効にする方法はありますか?


奇妙な賞金。すべての答えは正しいですが、あなたはそれらを信じていないのですか?ここここは、mysqlフォーラムでOracleで働いているMikeLischkeからのまったく同じ回答です。十分に信頼できますか?
Hugo Delsing 2014年

回答:


155

フェッチ時間-フェッチされた結果の転送にかかる時間を測定します。これはクエリの実行とは関係ありません。フェッチ時間はネットワーク接続に依存し、それ自体はクエリの最適化とは関係がないため、SQLクエリのデバッグ/最適化オプションとは見なしません。フェッチ時間がボトルネックの場合は、ネットワークに問題がある可能性が高くなります。

注:フェッチ時間は、クエリの実行ごとに異なる場合があります。

継続時間-クエリを実行する必要がある時間です。SQLクエリのパフォーマンスを最適化するときは、最小化するようにしてください。

参照


5
最適化を目的とする場合、結果がキャッシュの影響を受けquery_cache_typeないようにOFF、オプションはである必要があることに注意してください。stackoverflow.com/questions/181894/を

6
期間は通常最適化する値であることに同意しますが、クエリの効率に直接関係するため、フェッチ時間が異常に長いと、重要な論理エラーや非効率性も指摘される可能性があります。たとえば、クライアントがキャッシュする必要があるクエリごとに大量のテキストを転送する場合があります。あなたが唯一の10期待するときそれとも、100kの行を返す可能性があります
GrandOpener

1
良い点@ GrandOpener-または、本当に必要なのが行IDだけの場合は、select(*)を実行できます。
andrew lorien 2016年

MySQLでプロファイラーをオンにして、クエリを実行しました。次に、Workbenchとプロファイラーの両方の出力を調べました。Workbenchによって報告される期間は0.373ですが、プロファイラーからの合計期間は0.01にほとんど達しません。WorkbenchでのDuration出力は、MySQLがクエリの実行に費やした合計時間ではないということですか?
メグリオ2017年

これは正しくないようです。同じ行(15300)を返す2つのクエリがありますが、それらの統計は常に異なります。1つは14,443秒の継続時間/ 1111,810秒のフェッチを要し、他の443,986秒の期間/ 0,0089秒のフェッチは毎回かかります。何故ですか?
Shahid

15

期間はクエリの実行に必要な時間を示し、フェッチは結果セットの読み取り(データの取得)に必要な時間です。

マイクロ秒オプションについてはよくわかりません。これが最適化に関するものである場合は、覚えておいてください-「時期尚早の最適化はすべての悪の根源です」


0

マイクロ秒については、[設定]メニューで有効にしてみてください。以前の期間とフェッチ時間についても質問がありました。現在、期間はクエリの実行時間であり、フェッチはクエリの取得であるという回答が得られたようです。結果を取得し、必要な場所に送信します。たとえば、継続時間が0.078であるクエリを取得しましたが、データをWebサイトに送り返すのに60秒かかります。


0

実行時間はクエリの準備とクエリの実行に費やされた時間であり、フェッチ時間は行の結果のプルインに費やされた時間です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.