簡體   English   中英

限制File.Copy的速度

[英]Limit speed of File.Copy

我們在C#中使用一個簡單的File.Copy將數據庫備份移動到額外的位置。

但是在某些服務器上,這會導致SQL服務器停止工作。 這些服務器的內存非常有限,因此它們經常將數據分頁到硬盤驅動器。

雖然我們應該購買更多內存,但這不會發生很長時間: - /

所以我想知道我是否可以某種方式限制File.Copy操作的速度? (從而為SQL服務器提供了訪問硬盤的空間)

我可以使用兩個流的“舊學校”方法,通過緩沖區讀取和寫入,並且在讀取之間只睡5毫秒左右。 但我真的更喜歡更整潔的解決方案,如果有這樣的解決方案。

CopyFileEx可能會做你需要的 - 它有一個回調函數你可以用作人工slowing method (雖然沒有嘗試過這種情況,所以我不確定真正的效果 - 值得一試恕我直言)。

您是否嘗試過將復制過程優先於正常范圍? 您可以通過任務管理器或使用start命令執行此操作:

> start myCopyApp.exe /BELOWNORMAL

一個不能通過File.Copy獲得。 您還有許多其他選擇。 正如你所說,你可以手動流式傳輸字節,偶爾也會睡覺。 你可以使用BITS的實現,雖然這是一個小OTT。

此外,如果問題是內存 - 壓縮文件或將其分塊為較小的文件以便稍后重建。

我可以使用兩個流的“舊學校”方法,通過緩沖區讀取和寫入,並且在讀取之間只睡5毫秒左右。

如果這樣做,請查看使用FILE_FLAG_NO_BUFFERING標志:否則無論應用程序緩沖區有多小,文件系統都將進行緩沖(因此會導致額外的交換)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM