SqlFileStream - 哪个FileOption和分配大小?

时间:2016-06-09 18:44:47

标签: c# async-await filestream sqlfilestream

我正在使用SqlFileStream,在构造对象时,我不确定要使用哪个FileOptions和分配大小。我从另一篇文章中得到了这个,但它没有解释原因。可以帮助解释或给我一个推荐吗?

谢谢!

using (var destination = new SqlFileStream(serverPathName, serverTxnContext, FileAccess.Write, FileOptions.Asynchronous, 4096))
{
    await file.CopyToAsync(destination);
}

1 个答案:

答案 0 :(得分:1)

由于您似乎尝试异步复制此文件,因此您可能需要FileOptions.Asynchronous。这是访问文件最敏感的方式,因为您没有绑定到一个线程。 FileOptions.RandomAccessFileOptions.SequentialScan都使用缓存访问文件,但FileOptions.SequentialScan无法保证最佳缓存。顾名思义,最大的区别在于如何随机或顺序访问文件。 WriteThrough只是跳过缓存并直接转到文件,这个文件会更快但风险更大。

分配大小只是驱动器上的块大小。如果你传递0,它将使用默认大小,对于NTFS格式化的驱动器,它将是4KB。 4096原来是4KB所以这里的人只是确保块大小是4KB。