题
我在执行缓我的项目。后看高速缓存目录的结构,我看到许多例子,如:
cache
cache/a
cache/a/a/
cache/a/...
cache/a/z
cache/...
cache/z
...
你的想法。另一个例子,用于储存的文件,我们说我们的文件被命名为 IMG_PARTY.JPG
, 一共同方法是把它放在一个目录,名为:
files/i/m/IMG_PARTY.JPG
一些想法,但我想知道真正的原因。
文件系统的做线查找文件的速度,当有较少他们中的一个目录。这种结构差文件薄。
不弄糟*尼克斯事业喜欢
rm
, ,其中采取有限数量的参数和删除的大量文件往往是哈克(具有通过它虽然find
等等)。
什么是真正的原因是什么?什么是"好的"高速缓存目录的结构和为什么?
解决方案
每一次我这样做,它已经避免的缓慢线性的搜索文件系统。幸运的是,至少在Linux上,这正在成为一个过去的事情。
然而,即使在今天,b树基础的目录,一个非常大的目录将很难处理,因为它将永远和天只是为了得到一个清单的所有文件,不介意找到正确的文件。
其他提示
只是使用的日期。因为你将删除的日期。:)
如果你这样做 ls -l
, 所有的文件需要 stat()
ed,以获得详细信息,其中添加了大大的时候-发生这种情况是否FS使用哈希或线性结构。
因此,即使如果FS有能力应对令人难以置信的大型目录的大小,都有很好的理由不具有较大的平结构(它们还是猪回来了)
我已经基准GFS2(集)有32 000名目录中的文件或安排在一棵树上结构的递归的上市大约300倍的速度比得到一个清单时,他们都是在一个平坦的结构(可能需要长达10分钟以获得一个目录清单)
EXT4显示出相似的比率,但作为终点只有几秒钟的时间大多数人不会通知。
不隶属于 StackOverflow