一个文件夹可以存储多少个文件和文件夹有限制吗?

一个文件夹可以存储多少个文件和文件夹有限制吗?

我有这个文件夹,称之为“X”。

目前它有 40k 个文件夹和 70k 个文件。

我有点担心,里面都是图片。文件夹“X”可以存储的内容有限制吗?

该文件夹很重要,它存储了我当前用户的图像。请指教?

或者我应该存储在数据库(BLOB)中?我正在使用mysql。

请指教。

编辑:

我正在使用 Windows Server 2003。IIS 6

答案1

像其他一些发帖者一样,发布理论上的 NTFS 限制是很好的,但是您会发现,实际上如果您将 100k 个文件放入一个文件夹中,访问这些文件的性能会显著下降。这不仅适用于 NTFS,也适用于所有流行的 Linux 文件系统。

最简单的方法是将它们分成子文件夹,每个子文件夹不超过 10k-20k。如果您的命名相对均匀,您可以按照文件名的前几个字符进行命名,以保持简单。您需要一次性创建这些文件夹,而不是临时创建,这样根文件夹就不会碎片化。

如果您的文件较小且与块大小不匹配,则还存在块中空间浪费的问题。如果是这种情况,那么您可能需要考虑合并文件以匹配块大小。

答案2

据我所知,文件夹中的文件数量没有最大限制,但是 NTFS 对每个卷上的文件数量限制为 4,294,967,295 个。

答案3

如果同一个文件夹中的文件过多,Ext 文件系统至少会出现性能问题。我不确定,但我认为 NTFS 也会出现同样的问题。通过使用更深的文件夹树将每个文件夹中的文件数量限制在合理的范围内似乎是个好主意。

“合理的事情”必须在您的环境中进行测试和测量。我会选择低于 10K 的,但这只是一个提示...

答案4

这些数字很大,但还没有达到 NTFS 文件系统的极限。因此,虽然您不会遇到错误,但您可能会遇到性能问题,例如在检索目录列表时。

一般情况下,目录中约 6k-10k 个文件时,由于内存消耗,速度会开始变慢。如果文件数量超过 300k,文件创建速度也会变慢,因为“短文件名生成”无法找到唯一名称。

可以将文件存储在 MySQL blob 中,但在我看来,这样做速度很慢,并且会显著增大数据库。我建议创建一个更深的目录结构,并将当前结构迁移到该结构。

相关内容