2016-06-09 3 views
0

Я использую SqlFileStream, и при создании объекта я не уверен, какие FileOptions и размер выделения использовать. Я получил это из другой статьи, но не объяснил почему. Может ли кто-нибудь помочь объяснить или дать мне рекомендацию?SqlFileStream - Какой FileOption и размер выделения?

спасибо!

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

Вы думаете о попытке поиска Google в следующих 'C# MSDN SqlFileStream' – MethodMan

+0

Да, но я не ответил на мои вопросы. – Marco

+0

попробуйте это, и, может быть, вы проберете немного света https://msdn.microsoft.com/en-us/library/mt674879.aspx, и вы поймете, что такое часть 4096 в отношении размера/кусков.? также эта ссылка объясняет, что все разные методы и свойства и т. д. ... https://msdn.microsoft.com/en-us/library/system.data.sqltypes.sqlfilestream(v=vs.110).aspx – MethodMan

ответ

0

Поскольку он появляется, как вы пытаетесь скопировать этот файл асинхронно, вы, вероятно, хотите FileOptions.Asynchronous. Это самый отзывчивый способ доступа к вашему файлу, потому что вы не привязаны к одному потоку. FileOptions.RandomAccess и FileOptions.SequentialScan оба используют кеширование доступа к файлу, однако FileOptions.SequentialScan не гарантируется оптимальное кэширование. Как следует из названия, большая разница заключается в том, как доступ к файлу случайным образом или последовательно. WriteThrough просто пропускает кеш и переходит непосредственно к файлу, который будет быстрее, но более рискован.

Размер распределения - это только размер блока на диске. Если вы пройдете 0, он будет использовать размер по умолчанию, который для форматированного диска NTFS будет 4 КБ. 4096 оказывается 4 КБ, поэтому человек здесь просто следит за размером блока 4 КБ.

+0

спасибо, что все имеет смысл! – Marco

Смежные вопросы