Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 最佳做法-目录结构_Performance_File Io_Directory - Fatal编程技术网

Performance 最佳做法-目录结构

Performance 最佳做法-目录结构,performance,file-io,directory,Performance,File Io,Directory,在分组到子目录之前,驱动器上是否有保存图像的最佳目录数 例如,我收集了大约6000000个图像文件 我可以从逻辑上把它们分为几个层,但我不确定哪一层最适合最快的检索。我不需要搜索磁盘,因为我总是知道它的绝对路径 我的基本选择是: 1个目录有600000个文件我的直觉告诉我这不好! 或 1个目录,包含1500个子目录,每个目录平均包含400个文件,最小200个,最大600个 或 1个目录,包含75个子目录,每个子目录平均包含20个子目录,每个子目录中平均包含400个文件 第二种情况是我的理想选择,

在分组到子目录之前,驱动器上是否有保存图像的最佳目录数

例如,我收集了大约6000000个图像文件 我可以从逻辑上把它们分为几个层,但我不确定哪一层最适合最快的检索。我不需要搜索磁盘,因为我总是知道它的绝对路径

我的基本选择是:

1个目录有600000个文件我的直觉告诉我这不好! 或 1个目录,包含1500个子目录,每个目录平均包含400个文件,最小200个,最大600个 或 1个目录,包含75个子目录,每个子目录平均包含20个子目录,每个子目录中平均包含400个文件

第二种情况是我的理想选择,但我担心子目录的数量会影响性能

请讨论


罗杰

根据我的经验,这取决于文件系统,甚至取决于存储供应商……唯一的例外是,选择1将所有内容都转储到一个地方几乎肯定会表现不佳

我们遇到了一个类似的问题,使用了变体2。在我们的例子中,我们有数千万用户,每个用户都有大约10到1000个文件。我们最终得到了这样一个结构:

ab\cd\ef\所有\u文件

ab部分指定了装入点,cd\ef是下面两个级别的子文件夹


如果您将看到显著的IO负载,我建议您在大规模使用的硬件和网络上测试我们的配置。当然,如果需要的话,还要考虑如何备份和恢复部分数据。

这有利于实验后NTFS上的平面文件。这是有意义的,因为现代文件系统将目录内容存储在一个具有对数搜索时间的结构中,所以您可以在logn和>=2 logsqrtn的内容之间进行选择,或者最好是相等的内容。

我们谈论的是什么文件系统?抱歉-这是在带有RAID5阵列的Windows Server 2008操作系统上