SqlFileStream - 哪个 FileOption 和分配大小?
SqlFileStream - Which FileOption and allocation size?
我正在使用 SqlFileStream,在构建对象时我不确定要使用哪个 FileOptions 和分配大小。我从另一篇文章中得到了这个,但没有解释原因。有没有人帮忙解释一下或者推荐一下?
谢谢!
using (var destination = new SqlFileStream(serverPathName, serverTxnContext, FileAccess.Write, FileOptions.Asynchronous, 4096))
{
await file.CopyToAsync(destination);
}
由于您似乎正在尝试异步复制此文件,因此您可能需要 FileOptions.Asynchronous
。这是访问文件的最灵敏的方式,因为您没有绑定到一个线程。 FileOptions.RandomAccess
和 FileOptions.SequentialScan
都使用缓存访问文件,但是 FileOptions.SequentialScan
不能保证以最佳方式缓存。顾名思义,最大的区别在于随机或顺序访问文件的方式。 WriteThrough
只是跳过缓存并直接转到文件,这会更快但风险更大。
分配大小就是驱动器上的块大小。如果您传递 0
,它将使用默认大小,对于 NTFS 格式的驱动器,默认大小为 4KB。 4096
结果是 4KB,所以这里的人只是确保块大小是 4KB。
我正在使用 SqlFileStream,在构建对象时我不确定要使用哪个 FileOptions 和分配大小。我从另一篇文章中得到了这个,但没有解释原因。有没有人帮忙解释一下或者推荐一下?
谢谢!
using (var destination = new SqlFileStream(serverPathName, serverTxnContext, FileAccess.Write, FileOptions.Asynchronous, 4096))
{
await file.CopyToAsync(destination);
}
由于您似乎正在尝试异步复制此文件,因此您可能需要 FileOptions.Asynchronous
。这是访问文件的最灵敏的方式,因为您没有绑定到一个线程。 FileOptions.RandomAccess
和 FileOptions.SequentialScan
都使用缓存访问文件,但是 FileOptions.SequentialScan
不能保证以最佳方式缓存。顾名思义,最大的区别在于随机或顺序访问文件的方式。 WriteThrough
只是跳过缓存并直接转到文件,这会更快但风险更大。
分配大小就是驱动器上的块大小。如果您传递 0
,它将使用默认大小,对于 NTFS 格式的驱动器,默认大小为 4KB。 4096
结果是 4KB,所以这里的人只是确保块大小是 4KB。