写入大文件时的性能问题?

时间:2010-09-12 14:54:07

标签: file logging file-io performance

我最近参与处理服务器的控制台日志,出于好奇,我想知道,与小文件相比,写入大文件会出现性能问题。

例如,保持日志文件大小不是让它们变得笨重是一个好主意,但我无法支持任何一种方法。

在阅读或搜索文件时可能会出现问题,但是现在我更想知道写作是否会受到任何影响。 寻找专家意见。

编辑: 我认为操作系统只需要打开文件句柄并将数据推送到文件系统。与文件大小几乎没有关联,因为您必须继续将数据附加到文件的末尾,并且每当数据块已满时,OS将为文件分配另一个块。正如我之前所说,由于文件块的碎片整理,在阅读和搜索方面可能会出现问题,但在写作时我找不到多少差异。

2 个答案:

答案 0 :(得分:11)

作为一般规则,将块附加到小文件(或写入附加到零长度文件的第一个块)或将块附加到大文件之间应该没有实际区别。

有一些特殊情况(比如尝试在三重间接块中出错或初始打开必须读取所有映射信息),这可能会增加额外的I / O.但稳态应该是一样的。

我更担心拥有大文件的可管理性:备份速度慢,复制速度慢,查看速度慢等等。

答案 1 :(得分:2)

我不是专家,但无论如何我都会尽力回答。

较大的文件在磁盘上写入可能需要更长的时间,实际上它不是编程问题。这是文件系统问题。也许有文件系统,没有这样的问题,但在Windows上大文件不能写成一块,所以分割它们需要时间(原因很简单,头部将不得不移动到其他一些圆柱体)。假设我们正在讨论“经典”硬盘......

如果您需要建议,我会写下较小的文件并每天或当它们达到一定大小(或实际两者)时旋转它们。这是我在企业级产品中看到的相当常见的方法。