繁体   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