文件系统上的文件太多是否会严重影响 io 性能?

文件系统上的文件太多是否会严重影响 io 性能?

我的系统管理员告诉我,我们应该从服务器中删除旧的静态文件,并将其存储在数据库中,因为文件系统上的文件太多会影响系统的整体性能。影响大吗?目前,我们的目录中有大约 20,000 个文件,预计未来几年内会达到 100,000 个。这是在相对较新的 Ubuntu LTS 系统上。如果 100,000 不算大,那么什么数字才算大呢?

编辑: 这与在获得可接受的性能的情况下,一个 ext3 目录中的最大文件数是多少?因为我并不关心目录性能,而是关心当系统上的文件数量达到任意数量时整个系统的性能。在我的具体案例中,系统管理员认为 Apache 会因为整个系统上的文件总数而变慢。

答案1

从 ext3 开始,文件系统中文件的处理速度至少与在数据库中查找索引行一样快。这称为 HTree(实际上,数据库中的许多索引仍然使用 BTree。)

http://en.wikipedia.org/wiki/HTree

旧系统在有 1,000 个文件时就会开始出现问题,因为搜索是线性的(从第一个文件开始,然后遍历整个目录来找到您感兴趣的文件。)

那么为什么要使用数据库呢?

赞成

然后您只需要将数据库从一台计算机传输到另一台计算机(想想云系统......),特别是如果您想在计算机之间使用自动复制。

反对

您发送到数据库的所有数据都会通过网络!这意味着一个巨大的瓶颈。如果您不打算使用数据库的复制功能,那么(对我来说)就足以避免使用数据库了。这将对您的系统产生巨大的影响。直接使用文件系统,因为无论如何数据库都会做同样的事情:将数据保存到文件中!

PS:你的管理员似乎来自过去……

PPS“当启用 dir_index 功能时,ext3 HTree 索引在 ext3 中可用。”——我使用 ext4,所以我不太担心这个,虽然它可以在 ext4 中关闭;希望它在你的服务器上被打开...

相关内容