SQL Server의 varbinary 데이터를 C# 바이트 배열로 가져오는 가장 빠른 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/731353

문제

제목 자체가 말해줍니다.

저는 크기가 2MB에 가까운 파일/데이터를 다루고 있습니다.

도움이 되었습니까?

해결책

배열에 바이트가 필요한 경우 결과 스트림의 모든 바이트를 배열로 스트리밍해야 하기 때문에 모든 메서드가 거의 동일할 것입니다(SqlClient 클래스가 이 작업을 수행합니다).

저장 프로시저에 varbinary 출력 매개 변수가 있거나 데이터베이스 테이블의 필드에 varbinary 출력 매개 변수가 있는지 여부는 중요하지 않습니다. 하지만 반환할 결과 집합에 대한 스키마 정보가 없기 때문에 저장 프로시저가 약간 더 빠르기는 합니다.그러나 이는 다시 전송하는 데이터의 크기에 비하면 무시할 수 있는 수준입니다.

정말로 성능 향상을 원한다면 SequentialAccess가 설정된 DataReader를 사용한 다음 반환되는 필드에 대해 판독기에서 GetBytes를 호출하는 것이 더 좋습니다.이를 호출하면 필요한 바이트만 가져오고 데이터를 청크로 처리할 수 있습니다.

크기가 2MB인 바이트 배열을 할당하려고 하면 확실히 문제가 발생하기 때문에 이는 중요합니다.일반적으로 할당을 시작합니다. 크기가 큰 연속된 메모리 블록(배열)은 좋지 않은 생각이며 성능을 저하시킵니다.가능하다면 데이터를 더 작은 단위로 처리하세요.

다른 팁

sqldatareader.getBytes 당신이 찾고있는 것이되어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top