当我需要进行某些通配符匹配时,我遇到了单个目录中数十万个文件的性能问题。从我的应用程序的角度来看,一个简单的解决方案是将文件放在深度嵌套的文件夹中。
整个层次结构中文件夹总数的预期上限为 9^30。可以假设永远不会达到这个限制(见下面的评论)。文件夹的数量只会随着文件的添加而增加。
问题:当在 ext4 文件系统上创建大量文件夹时,从文件系统的角度来看是否有任何影响?例如消耗了多少空间。一个文件夹只包含另一个文件夹?我会因为元数据过多而遇到麻烦吗?
(从我的应用程序的角度来看,与更简单的层次结构中的基于哈希的文件夹相比,上述结构具有某些优势,我知道组织数据的“更好”方法)
在优化我的 PHP 操作码缓存时,我尝试交替 stat 设置(= 操作码缓存检查文件是否通过 修改stat()
,然后再使用缓存结果)。但我没有发现我的应用程序基准有任何差异。正在使用的文件系统是ext4
通过noatime
选项安装的。
假设stat()stat()
使用的元数据保存在内存中是否正确,或者使用 时是否总是存在某种硬盘交互?