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

Rhu*_*arb 22 linux windows filesystems file

可能重复:
目录中有多少文件太多?

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

mdm*_*dma 17

根据这篇Microsoft文章,目录的查找时间与条目数的平方成正比.(虽然这是对NT 3.5的错误.)

在软件论坛上的Old Joel上提出了类似的问题.一个答案是性能似乎在1000到3000个文件之间下降,而一个海报在18000个文件中达到了硬限制.还有一篇文章声称可能有300,000个文件,但搜索时间会迅速减少,因为所有8.3文件名都已用完.

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


Rom*_*eau 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)查找

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

  • 如果他想知道严格的限制,那就是他所要求的.在性能变得不理想的情况下存在"软"限制,并且在达到硬限制之前很久就会遇到这些软限制. (7认同)