2010-09-12 73 views
11

我最近參與處理服務器的控制檯日誌,出於好奇,我想知道,與小文件相比,寫入大文件時存在性能問題。寫入大文件時出現性能問題?

例如它是一個好主意,讓日誌文件大小小,而不是讓他們長大笨重,但我無法爭辯太多有利於這兩種方法的。

有可能是在閱讀,或文件搜索的問題,但現在我更想知道,如果文字可以以任何方式的影響。 尋找專家意見。

編輯: 我認爲這是操作系統只需打開文件句柄並將數據推送到文件系統。與文件大小几乎沒有關係,因爲您必須將數據附加到文件末尾,並且只要數據塊滿了,OS就會將另一個塊分配給文件。正如我前面所說,由於文件塊的碎片整理,在讀取和搜索時可能會出現問題,但我在寫入時找不到很多差異。

+2

如果使用分機或其他現代的Unix/Linux的文件系統,然後使用(附加的)日誌文件填充磁盤,是關於唯一會導致文件系統碎片化的用例(如果你在微軟的窗口中,那麼忽略這一點,幾乎每個用例(具有併發性或刪除)將導致您的文件系統分段)。爲了減輕這種碎片化,旋轉並壓縮日誌文件(使用日誌旋轉工具)。壓縮不僅會減小文件大小,還會對文件進行分解。 – 2015-08-03 23:23:03

回答

8

作爲一般規則,在將塊附加到小文件(或寫入追加到零長度文件的第一個塊)或將塊附加到大文件之間應該沒有實際區別。

有特殊情況(如試圖在一個三重間接塊或不必讀取所有的映射信息的初始開放的故障),它可以增加額外的I/O。但穩態應該是一樣的。

我會更擔心其龐大的文件管理:緩慢的備份,慢慢地複製,緩慢進行查看等

1

我不是專家,但我會盡力回答。

較大的文件可能需要較長的時間才能在磁盤上寫入,實際上這不是一個編程問題。這是文件系統問題。也許有文件系統,但沒有這樣的問題,但在Windows上,大文件不能一次寫下來,因此碎片化需要時間(因爲磁頭必須移動到其他磁道)。假設我們所談論的「經典」的硬盤驅動器...

如果你想要一個建議,我會去寫下來更小的文件和日常兩種旋轉他們或當他們投中了一些大小(或兩者實際上)。這是我在企業級產品中看到的相當普遍的做法。

+0

我認爲這是操作系統只需打開文件句柄並將數據推送到文件系統的方式。與文件大小几乎沒有關係,因爲您必須將數據附加到文件末尾,並且只要數據塊滿了,OS就會將另一個塊分配給文件。 – Ashish 2010-09-12 17:30:43