제목 자체에 대해 말하고 있습니다.SQL Server에서 varbinary 데이터를 C# Byte 배열로 가져 오는 가장 빠른 방법은 무엇입니까?
2MB 근처의 파일/데이터를 다루고 있습니다.
제목 자체에 대해 말하고 있습니다.SQL Server에서 varbinary 데이터를 C# Byte 배열로 가져 오는 가장 빠른 방법은 무엇입니까?
2MB 근처의 파일/데이터를 다루고 있습니다.
배열에서 바이트가 필요한 경우 결과 스트림의 모든 바이트를 배열로 스트리밍해야하기 때문에 모든 메서드가 거의 같을 것입니다 (SqlClient 클래스는이 작업을 수행 할 것입니다 당신을 위해).
반환 할 결과 집합에 대한 스키마 정보가 없으므로 저장 프로 시저가 약간 빠르지 만 저장 프로 시저 또는 데이터베이스 테이블의 필드에 varbinary 출력 매개 변수가 있는지 여부는 중요하지 않습니다 . 그러나 이것은 돌아가는 데이터의 크기에 비해 무시할 만합니다.
성능 향상을 원한다면 SequentialAccess가 설정된 DataReader를 사용하고 반환되는 필드에 대해 GetBytes를 호출자에게 전달하는 것이 좋습니다. 이를 호출하면 필요한 바이트 만 가져오고 데이터를 청크로 처리 할 수 있습니다.
크기가 2MB 인 배열을 할당하는 데 문제가 있기 때문에 중요합니다. 일반적으로 개의 연속적인 메모리 블록 (배열이 무엇인지)을 할당하기 시작하는 것은 좋지 않은 생각이며 성능을 저하시킵니다. 가능한 경우 작은 단위로 데이터를 처리하십시오.
SqlDataReader.GetBytes 당신이 찾고있는 것이어야합니다.
GetBytes가있는 버퍼를 사용하면 2MB의 전체 크기를 고려할 때 어떤 버퍼 크기가 적당합니까? – Larsenal
@Larsenal : 말하기는 불가능합니다. 앱의 성능 특성과 관련해서 만 결정할 수 있습니다. 튜닝 문제입니다. 난 아마 당신이 처리하고자하는 데이터를 충분히 큰 가정 몇 KB 주위 어딘가에 시작거야. – casperOne