代码之家  ›  专栏  ›  技术社区  ›  Gajendra Bang

linux中单个文件夹中有200000个映像,是否存在性能问题?

  •  14
  • Gajendra Bang  · 技术社区  · 14 年前

    我有一个php/mysql网站 20万 单个文件夹中的图像 (linux服务器) . 我不认为,我将永远不需要看到他们在文件资源管理器,相反,他们将在他们的个人网页的网站上查看。它们只是显示在网站的产品页面上。 . 所以把它们保存在一个文件夹里是明智的吗?它能降低网站的性能吗?

    6 回复  |  直到 7 年前
        1
  •  14
  •   nobody    10 年前

    Ext3使用树来保存目录内容,因此它在单个目录中处理大量文件的能力比那些使用线性目录列表的文件系统要好。 在这里你可以阅读 the description of the tree

    然而,20万个文件仍然是一个巨大的数字。根据文件名的前n个字符将它们移到子目录中是合理的。这种方法允许您只保留文件名而不保留目录名,当您需要访问该文件时,您知道在哪里(在哪个子目录中)查找该文件。

        2
  •  5
  •   Community Egal    7 年前
        3
  •  1
  •   invert    14 年前

    我知道选择了一个答案,我想添加一个关于提高性能的解决方案

    您可以通过将列表存储在索引数据库(比如SQLite)中并从中查询结果来提高性能。您可以选择记录的子集,并通过这种方式更容易地实现分页,还可以过滤结果。

        4
  •  0
  •   shinzo    14 年前

    文件系统决定性能,200000个没有索引的图像将降低ext2(或NTFS)的性能

        5
  •  0
  •   alex    14 年前

    另一方面,将文件分割成几个文件夹似乎没有太多的缺点,除了在处理它们时增加了复杂性。

    性能将因文件系统、其配置和访问模式而异。我相信如果在多个文件夹之间分割文件,性能会明显下降,这是很奇怪的。

    所以我要说,分成不同的文件夹。。。

        6
  •  0
  •   dmeister    14 年前

    hashFS: Applying Hashing to Optimize File Systems for Small File Reads .

    对于web场景(本文中的假设),我们已经看到使用平面文件集(一个目录中有更多的文件)比使用深度文件集(更深的目录树)更好的ext2性能。