I am using the SqlFileStream and when constructing the object I am not sure which FileOptions and allocation size to use. I got this from another article but it did not explain why. Can somone help explain or give me a recommendation?
thanks!
using (var destination = new SqlFileStream(serverPathName, serverTxnContext, FileAccess.Write, FileOptions.Asynchronous, 4096))
{
await file.CopyToAsync(destination);
}
Since it appears like you are trying to copy this file asynchronously, you probably want FileOptions.Asynchronous
. This the most responsive way to access your file, because you aren't bound to one thread. FileOptions.RandomAccess
and FileOptions.SequentialScan
both use caching the access the file however FileOptions.SequentialScan
isn't guaranteed to cache optimally. Like the name implies, the large difference is how the access the file either randomly or sequentially. The WriteThrough
just skips the cache and goes directly to the file which would be faster but riskier.
Allocation size is just the block size on the drive. If you pass 0
it would use the default size, which for an NTFS formatted drive would be 4KB. 4096
turns out to be 4KB so the person here is just making sure the block size is 4KB.