2011-03-04 71 views
1

我對一些關於磁盤尋找和寫入的低級細節感興趣,當你同時處理兩個文件時。磁盤IO,兩個文件的性能問題?

我在考慮拆分一個文件,目前我已經讀取和寫入兩個文件以更好地處理併發。它們可能同時被大量訪問。

a)由於兩個文件被訪問而不是一個文件,即使磁盤搜索時間從一個大的「一體化」文件的開始到結尾,性能是否會更糟?

b)你能以某種方式在磁盤上放置兩個文件或「彼此靠近」以提高其併發性能嗎? (我想這將很難用磁盤碎片和所有)

c)SSD驅動器如何影響這一點,因爲他們不旋轉,他們應該是非常好的像這樣的解決方案嗎? d)如果在兩個文件中同時觸發快速I/O讀寫操作,操作系統(Windows)會進行優化,以便磁盤頭部不會來回太多?

我有點好奇,爲什麼有些數據庫/ nosql解決方案看起來如此堅強,以至於在使用多個文件時將事物保存在單個文件中似乎提供了一些優勢。

回答

2

a)不,開銷幾乎與單個文件相同。 b)不是真的,除非你確切地知道你的使用模式。如果需要移動文件,您可以在Windows中使用FSCTL_MOVE_FILE,但我不推薦它,因爲(1)您需要管理員權限,(2)確定文件的放置位置真的很難,因爲每個磁盤都有不同的規格,因爲您可能最終不得不基本構建自己的碎片整理引擎。

c)是的,固態硬盤是完美的解決方案! :)

d)盤被設計成允許這種在SATA驅動器中的本機命令隊列(它由操作系統進行重新排序最多32個指令獲得更好的性能),而它絕對是有用的,它不是相當爲你可能會想到一個明顯的收益。文件系統的內存緩存在這裏是一個更有影響力的因素 - 它將數據緩存在內存中,以便隨機寫入可以更順序(更快)。

0

c)是的,這是真的 d)現代操作系統做到這一點。 NCQ在HD內完成此操作。