人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: takets
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:MySQL いであ クエリ 比較 経験則
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ●
●60ポイント ベストアンサー

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

[例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]

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

◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ