2016-06-09 20 views
0

SqlFileStream을 사용하고 있으며 개체를 만들 때 사용할 FileOptions와 할당 크기가 확실하지 않습니다. 나는 다른 기사에서 이것을 얻었다. 그러나 그것은 이유를 설명하지 않았다. somone 도움을 설명하거나 나에게 추천을 줄 수 있습니까?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.RandomAccessFileOptions.SequentialScan은 모두 파일 액세스에 캐싱을 사용하지만 FileOptions.SequentialScan은 최적의 캐시가 보장되지 않습니다. 이름에서 알 수 있듯이 큰 차이는 파일에 임의로 또는 순차적으로 액세스하는 방법입니다. WriteThrough은 캐시를 건너 뛰고 더 빠르지 만 위험한 파일로 바로 이동합니다.

할당 크기는 드라이브의 블록 크기에 불과합니다. 0을 전달하면 기본 크기가 사용되며 NTFS로 포맷 된 드라이브의 경우 4KB가됩니다. 4096은 4KB로 밝혀 졌으므로 여기서 사람은 블록 크기가 4KB인지 확인하는 것입니다.

+0

모든 것을 이해해 주셔서 감사합니다! – Marco