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

mysql に関する質問です。version 5.0.77 です。select hoge.* from hoge と検索した場合、limit の指定がないと、行数の大きいデータの場合に、メモリを非常に喰うのでしょうか?

●質問者: kaiketsu
●カテゴリ:コンピュータ インターネット
✍キーワード:hoge MySQL SELECT データ メモリ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● うぃんど
●35ポイント

【1】メモリを喰い過ぎてパンクしたりはしません

メモリの利用量はあらかじめ決められていますので「非常に喰う」という状況にはなりません

もちろん、メモリ関係のセッティングを勝手に調整して、しかも調整に失敗している場合は除きます

http://dev.mysql.com/doc/refman/5.1/ja/memory-use.html

【2】行数が多いとハードディスクからの読み込みが負担になります

行数が多いと、クエリキャッシュなどが力を発揮できず(すぐに満タンとなってしまい、古いものから順に削除されてしまうため、メモリ上にデータを残して置けなくなり、毎回毎回ハードディスクからデータを取ってくるようになってしまうため)システム全体のパフォーマンスはすこぶる悪くなるかもしれません

データベースを利用する場合には「少ないアクセスで最大の効果をあげるように工夫する必要があります」ので「クエリ実行結果が出来る限りコンパクトになるようにlimitなどを意識して使う」ようにしましょう(MySQLに限らず他のデータベースでも同様です)


2 ● あすか
●35ポイント

MySQLサーバが動いている環境や、DB構成がInnnoDBかMyISAMかによって変わってきます。


たとえばWindows上でInnnoDBの場合、LIMIT句がないとバッファプールに使われる可能性はあります。

さらにWindows版のInnoDBの場合、ファイルシステムのキャッシュを使わないので、メモリがかなり浪費される可能性があります。


参考「InnoDB Startup Options and System Variables


3 ● k-tan2
●10ポイント

>行数の大きいデータの場合に、メモリを非常に喰うのでしょうか?

どのくらいの件数を言ってるか不明ですが、10万件とかその程度なら問題ないレベルです。

LMITは、データが1000件あるときに、

WEBとかでよくあるように、1-10、11-20,21-30とかのように

部分を取得したいときに使うと便利なだけです。

LMITをつけても、検索条件に該当するレコードを取得して、そこから間引くだけなので

メモリー消費量が特にへるわけでもないんでもないです。

そもそもLMITを使うことで、メモリー消費量を抑えようとかそういう考えの人はいないと

思いますけど。実際に、メモリーの消費量が抑えられるとしても。

http://q.hatena.ne.jp/answer

関連質問


●質問をもっと探す●



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