dr.*_*vil 8 .net memory performance storage
我找不到问题的好标题,这就是我想要做的:
最好的方法是什么?
更新:
如果您想避免使用数据库,可以将它们作为文件存储在磁盘上(为了简单起见)。但是,在单个目录中维护大量文件时,您需要注意文件系统注意事项。
许多常见的文件系统在某种顺序列表中维护每个目录的文件(例如,简单地一个接一个地存储文件指针或索引节点,或者在链接列表中)。这使得打开位于列表底部的文件确实慢的。
一个好的解决方案是将目录限制为少量节点(例如 n = 1000),并在该目录下创建一个文件树。
因此,不要将文件存储为:
/dir/file1 /dir/file2 /dir/file3 ... /dir/fileN
将它们存储为:
/dir/r1/s2/file1 /dir/r1/s2/file2 ... /dir/rM/sN/fileP
通过以这种方式分割文件,您可以显着缩短大多数文件系统的访问时间。
(请注意,有一些新的文件系统表示树中的节点或其他形式的索引。该技术也适用于这些文件系统。)
其他考虑因素是调整文件系统(块大小、分区等)和缓冲区缓存,以便获得良好的数据局部性。根据您的操作系统和文件系统,有很多方法可以做到这一点 - 您可能需要查找它们。
或者,如果这不能解决问题,您可以使用某种嵌入式数据库,例如 SQLlite 或 Firebird。
HTH。