我在执行缓我的项目。后看高速缓存目录的结构,我看到许多例子,如:

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显示出相似的比率,但作为终点只有几秒钟的时间大多数人不会通知。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top