我有一个正在从库中恢复大量数据的应用程序。我们使用的是Windows server 2003。随着进程的进展,我们看到性能下降。我为我的四个主要任务添加了一些性能计数器,创建文件,从库中读取,WriteData,关闭文件。我们正在恢复数百万个文件。我观察到的是,随着进程的进展,createfile API的性能正在下降。其他操作是一致的。
你知道是什么原因造成的吗?
提前感谢您的所有回答/建议。
致敬,布山
发布于 2009-06-09 19:42:56
文件系统是否为NTFS?数百万个文件是否位于同一个目录中,它们是否具有相似的名称?从technet article on NTFS internals
如果文件夹中有大量文件(300,000或更多),并且这些文件具有具有相同首字母的长文件名,则创建文件所需的时间会增加。之所以会增加,是因为NTFS将短文件名基于长文件名的前六个字符。在包含超过300,000个文件的文件夹中,在NTFS使用了与长文件名相似的所有8.3名称后,短文件名开始冲突。生成的短文件名与现有短文件名之间的重复冲突会导致NTFS重新生成短文件名6到8次。
您可以使用命令行工具‘fsutil’查询此行为:
fsutil behavior query disable8dot3发布于 2009-05-29 02:03:28
您能提供一些关于存储库数据和创建文件的位置的信息吗?
例如,如果您在同一目录中创建所有输出文件,您可能会发现CreateFile速度变慢了,因为它需要检查越来越多的文件名是否存在冲突。
发布于 2009-05-28 18:10:23
可能与系统缓存发生冲突?您可以查看CreateFile文档中的缓存行为部分。
https://stackoverflow.com/questions/922359
复制相似问题