🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

MySQL Workbench

MySQL Workbenchは、オープンソースのデータベースモデリングツールです。ビジュアルなデータベース設計・SQL開発・サーバー設定・ユーザー管理・バックアップといった様々な管理ツールを備えます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

10915閲覧

MySQL WorkbenchのDuration/Fetchは、何を表しているのでしょうか?

new9

総合スコア19

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

MySQL Workbench

MySQL Workbenchは、オープンソースのデータベースモデリングツールです。ビジュアルなデータベース設計・SQL開発・サーバー設定・ユーザー管理・バックアップといった様々な管理ツールを備えます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

1クリップ

投稿2019/11/29 06:52

編集2019/11/29 09:52

ご質問させてください。

Windows10でMySQL Workbench 8.0.15 を使用しています。

SQLを実行すると、右下の窓(Output)に実行したSQLとかかった時間が出ます。
かかった時間と言うのは、Duration/Fetchと表示されている内容になります。

このDurationとFetchは具体的に何を表しているのでしょうか?

SELECTをしているSQLがあり、チューニングを行っております。
チューニング前はDurationが600secでFetchが0.063secと表示されていましたが、
チューニング後はDurationが0.766secでFetchが100secと表示されるようになりました。

多少、SQLの書き換えは行いましたが、結果セットの行数はチューニング前とチューニング後で同じです。(3万行です。)

SELECTしているカラムは10カラム程度で、それぞれのカラムは20バイト程度です。

色々と調べていると、Durationは実行時間と書いてるページが多いので、SQLの実行時間と理解しました。
Fetchは結果を転送するのにかかった時間でネットワークの状況によって増減すると書いてあるページが多かったです。

上記が正しいとした場合、分からない点があります。
それは、チューニング前とチューニング後で結果セットの行数が同じなのに、Fetch時間が大幅に違うということです。
同じデータ量を転送するのに、0.063secと100secは違いすぎると思っています。

どなたかご存知の方がいらっしゃれば、ご教示頂ければ幸いです。

■追記です。
色々調べていて、パターンがわかってきました。
SQLにorder byがついている場合はDurationに時間がかかり、
order byがついていない場合はFetchに時間がかかるようです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

StackOverflowのmysql duration and fetch timeという質問への回答に、わかりやすい説明がなされていたので共有しておきます。

これです

https://stackoverflow.com/a/68047629/8674852

この回答によると、mysql workbenchにおいては、「durationがquery実行時間」、「fetchがデータのを取得するのにかかる時間」というような明確な区分けはできないそうです。

その理由としては、

  • データの転送開始後もqueryが実行中であることがある

(計算が完全に終わる前にデータの転送を開始し始めることがある)

  • その場合、データの転送開始のタイミングまでをduration、開始以降をfetchとして表示している

ということが書かれていました。

つまり、fetchがものすごく長い場合は、その間もqueryが動いている可能性がある、と言えるようです。

投稿2021/10/04 05:33

siruku6

総合スコア1382

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

new9

2023/10/26 22:55

お礼が遅くなってしまい、失礼しました。 理解出来ました。 該当のSQLは、結合方法がNLJでしたので、 order byがある時と無い時の差は、 order byが無い時は結合出来たデータからデータ転送を開始するが、 order byがある時は全件データ抽出して並び替えをしてからデータ転送を開始するから Duration/Fetchの値が大きく違うということですね。
guest

0

サーバーの稼働状況やネットワーク状況により結構評価値はかわりますよ。

投稿2019/11/29 07:15

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問