我有这个文件夹,叫它'X'。
目前,它有 40k 个文件夹和 70k 个文件。
我有点担心,里面是图像。文件夹“X”可以存储是否有限制?
该文件夹很重要,它存储了我当前用户的图像。请指教?
还是应该存储在数据库(BLOB)中?我正在使用mysql。
请指教。
编辑:
我正在使用 Windows Server 2003。IIS 6
我有这个文件夹,叫它'X'。
目前,它有 40k 个文件夹和 70k 个文件。
我有点担心,里面是图像。文件夹“X”可以存储是否有限制?
该文件夹很重要,它存储了我当前用户的图像。请指教?
还是应该存储在数据库(BLOB)中?我正在使用mysql。
请指教。
编辑:
我正在使用 Windows Server 2003。IIS 6
正如其他一些海报所做的那样,发布理论上的 NTFS 限制非常好,但是您会发现实际上,如果您将 100k 文件放在一个文件夹中,访问这些文件的性能会显着下降。不仅 NTFS 如此,所有流行的 Linux 文件系统也是如此。
最简单的方法是将它们分成不超过 10k-20k 的子文件夹。如果您的命名相对均匀分布,您可以通过文件名的前几个字符来做到这一点,以保持简单。您想一次性创建这些文件夹,而不是即时创建,这样根文件夹就不会碎片化。
如果您的文件很小并且不与块大小对齐,还会存在块中浪费空间的问题。如果是这种情况,那么您可能希望查看组合文件以匹配它。
据我所知,一个文件夹中的文件数量没有最大限制,但是 NTFS 的一个卷上有 4,294,967,295 个文件的限制。
如果同一文件夹中有太多文件,Ext 文件系统至少会出现性能问题。我不确定,但我认为 NTFS 也会出现同样的问题。通过更深的文件夹树将每个文件夹的文件数量限制在合理的范围内似乎是个好主意。
“一些合理的东西”必须在您的环境中进行测试和测量。我会选择低于 10K,但这只是一个提示......
如果您使用的是 Windows 2003,那么您的磁盘大概是 NTFS 格式的吗?
有关 NTFS 的其他相关限制,请参见此处和此处(向下滚动到“NTFS 大小限制”)。
但这是其中一种情况,如果你接近极限,那么你几乎肯定做错了什么。
这些数字很大,但并未接近 NTFS 文件系统的限制。因此,虽然您不会出错,但您可能会遇到性能问题,例如在检索目录列表时。
通常,由于内存消耗,目录中大约 6k-10k 的文件会开始减慢速度。超过大约 300k 个文件时,由于“短文件名生成”难以找到唯一名称,文件的创建也会变慢。
将文件存储在 MySQL blob 中是可能的,但在我看来它很慢并且会显着增加您的数据库。我建议创建一个更深的目录结构,并将您当前的结构迁移到它。
您没有指定文件系统或操作系统。在 Linux中, ext2(可能是 ext3 和 ext4,因为它们是基于它的)具有 1.3 × 10^20 个目录条目的理论限制。