あまりCNET向きとは言えない技術的過ぎるTIPSで恐縮なのだが。
Linuxのドキュメントには次のように記載されている。
現行の単方向リンクのリストによるディレクトリの実装で、一つのディレクト リ内のファイル数は、実運用上約 10-15k 個が上限になります。この制限はこ のような大きなディレクトリ内のファイルを作成および削除 (さらに検索) す る時のパフォーマンスの問題のためです。
JF: Linux Kernel 2.4 Documentation: ext2.txt より
注:これは現在主流のext3ではなく古いext2のものだが、実際問題としてこの制限はほとんど変わっていない。xfsになると話は別だが。
ということで、ひとつのディレクトリにつくれるファイル数は1万個くらいにしておいたほうがいいようだ。
だが筆者の経験上ではせいぜい5000個くらいでやめておいたほうがいい。
これ以上になるとたとえばlsコマンドの反応も遅くなりがちで、開発やデバッグ作業自体が滞るからだ。
もちろん使用しているマシンやHDDの性能にもよる。
またxfsといったさらに最新のファイルシステムだとひとつのディレクトリに数十万個程度のファイルは余裕のようだ。
たくさんのファイルを自動生成するタイプのアプリをつくるケースは意外とよくある。
squidプロキシーサーバはWebページのキャッシュファイルを大量に持つわけだし、
postfixメールサーバも大量のメールがある場合にそれをキューとしてファイルに持たなければならない。
そういったソフトはたくさんのファイルを複数のディレクトリに分けて保存するようになっている。
通常のWebアプリでも、たとえばDBへの問い合わせ結果をキャッシュファイルに保存することで性能を上げるという手法はよくある。
そのため、PHP言語のPEARライブラリのCache_Liteライブラリでは、hashedDirectoryLevel というオプションが設けられ、たくさんのキャッシュファイルを生成してもそれが適宜複数のディレクトリに分けて保存されるようにすることで性能の劣化を防げるようになっている。
以上、どこかに書いてありそうであまり書かれていないTIPSでした。
※このエントリは CNET Japan ブロガーにより投稿されたものです。朝日インタラクティブ および CNET Japan 編集部の見解・意向を示すものではありません。
メンバー限定サービスをご利用いただく場合、このページの上部からログイン、またはCNET_ID登録(無料)をしてください。
新着コメント
sapoさん、コメントありがとうございます。 伝え聞くところによると、この業......
メモリ1枚増設って、そんなに大変なことなんでしょうか?
投稿者 : まつもと
kyoji_kさん、コメントありがとうございます。 要領のいい人ならこんな長い文......
小さな事務所のSEO - その9
投稿者 : まつもと
>とにもかくにも有権者の意識次第 >ネットはしょせんツールに過ぎなくて、結......
ボブ・ロバーツ
投稿者 : 異端審問スペイン人
興味深く拝読させて頂きました。 「こんな項目が沢山ある会社の社員は、高い......
スクエニを見て、自分を見直す
投稿者 : 朴念仁
新しい情報のありかをお知らせくださり、どうもありがとうございます。さきほ......
電子経済産業省の委託費は公開される場合がある
投稿者 : sumimotoshohei