MySQLでクエリの速度を比較するやり方があれば教えてください。


通常の実行結果だと 1.50sec と 1.00secはどれだけ差があるものなのかピンとこないので、どれくらいであれば速いor遅いのか、基準(経験則でも構いません)などもあればお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/06/21 14:03:47
  • 終了:2006/06/22 14:20:30

ベストアンサー

id:bonlife No.1

回答回数421ベストアンサー獲得回数752006/06/21 18:55:58

ポイント60pt

個人的な意見になりますが、クエリの速度が速いのか、遅いのか、ということは処理が想定(あるいは希望)している時間内に終わるのか、どうか、という点から考えるべきだと思います。

[例1. WEBサイトを表示する場合]

例えば、WEBサイトのページを表示する際にMySQLに問い合わせて情報を取得する場合、MySQL以外の部分の処理を含めて数秒以内に終わっている必要があります。

モデムの時代にも8秒ルールと呼ばれる暗黙のルールがあったように、たいていの人間はあまり長い時間待つことができません。

ブロードバンド化が進んだ現在では3秒ルールなどと言われたりしています。

WEBサイトのページを表示する処理は、1ページあたりに発行するMySQLのクエリの実行時間の合計とページ内で使われる画像などのダウンロード時間の合計が3秒に収まっている必要がある、ということになります。

(他の要素もありますが、簡略化のために省略いたします。)

ページ内で10回のクエリが発行され、画像のダウンロードなどに0.5秒かかる場合、1つのクエリは(3-0.5)/10、つまり0.25秒以内に終わる必要があることになります。

上記の条件の場合、0.25秒以下のクエリは速い(あるいは遅くない)、0.25秒を超えるクエリは遅い、ということです。

別の例で、ページ内では1回のクエリが発行され、画像のダウンロードなどに0.5秒かかる場合、1つのクエリは(3-0.5)/1ということになり、2.5秒以内に終われば問題ない(遅くはない)ということになります。

[例2. バッチでの集計処理の場合]

複数のテーブルから膨大なデータ(数億件)を集めてくるようなクエリの場合、WEBページ表示と同様のパフォーマンスが求められることはありません。

数分、数十分以内に処理が終われば問題がない、というケースが多いです。

想定している時間内に処理が終われば、その処理は「速い」(あるいは遅くない)のです。

[個人的な感想]

おそらくWEBページのことを想定していると思いますが、個人的には1ページあたり1秒以内に表示されて欲しいです。

MySQLのクエリに1秒は遅すぎます。

1ページ内で2つのクエリが実行される場合、それだけで2秒かかってしまいますよね。

MySQLの実行時間は0.1秒、0.2秒程度で終わって欲しいところです。

処理の内容にもよりますが、クエリに1秒かかってしまうのであれば、MySQLの設定を変更するなどして、パフォーマンス向上を図るべきだと思います。

(実際のクエリの実行時間はMySQLの設定だけではなく、物理的な環境(HDDの読み書きの速度、OS、メモリ)によって変わりますので、その点も考慮するとベターだと思います。)

mysqlbenchというツールがありますので、MySQLの設定を色々と変更し、都度パフォーマンスを測定することで、相対的に速くなったのかどうかはある程度確認できると思います。

また、面白い方法で高速化を試みている例もありますので、参考にしてみてください。

[参考URL]

少しでも参考になれば幸いです。

id:takets

ありがとうございました。

エセ負荷分散は面白そうですね。今度試してみます。

2006/06/22 14:20:10

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません