目录中有多少文件太多(在Windows和Linux上)?

时间:2010-06-08 03:02:26

标签: windows linux file filesystems

  

可能重复:
  How many files in a directory is too many?

有人告诉我,在目录中放置太多文件会导致Linux和Windows出现性能问题。这是真的?如果是这样,避免这种情况的最佳方法是什么?

2 个答案:

答案 0 :(得分:17)

根据this Microsoft article,目录的查找时间与条目数的平方成比例增加。 (虽然那是对NT 3.5的错误。)

Old Joel on Software Forum上提出了类似的问题。一个答案是性能似乎在1000到3000个文件之间下降,而一个海报在18000个文件中达到了硬限制。还有一篇文章声称可以使用300,000个文件,但搜索时间会随着所有8.3文件名用完而迅速减少。

要避免使用大型目录,请创建一个,两个或更多级别的子目录,并将文件哈希到这些目录中。最简单的哈希使用文件名的字母。因此,假设您选择了3个嵌套级别,以abc0001.txt开头的文件将被放置为\ b \ c \ abc0001.txt。 3可能是矫枉过正 - 每个目录使用两个字符会减少嵌套级别的数量。例如ab\abc0001.txt。如果您预计任何目录将远远超过ca,您只需要进行两级嵌套。 3000个文件。

答案 1 :(得分:10)

Windows文件系统目前是NTFS。卷上的最大文件数为4,294,967,295。驱动器上的文件编目在B +树中进行,它可以进行日志(N)查找。

在旧的FAT32上,文件夹中有64K文件的限制。索引也是通过每个文件夹的列表完成的,因此在几千次性能大幅下降之后。您可能不需要担心FAT32,除非您的观众有DOS,Windows 95,98或Millenium(Yuck)。

在Linux上,它实际上取决于您使用的文件系统(如果您决定这样做,可能是NTFS)extf3每个目录限制为32k文件。查找也是B + Tree,将为您提供LOG(N)查找

在进一步研究之后,您的问题应该是关于文件系统的限制。