2010-11-19 2 views
1

SQL 서버에 많은 양의 데이터를 삽입하는 다른 방법을 평가하고 있습니다. Ado.Net의 SqlBulkCopy 클래스와 OLEDB의 IRowsetFastLoad 인터페이스를 찾았습니다. 내가 아는 한, IRowsetFastLoad는 내 기본 플랫폼 인 C#으로 매핑되지 않으므로 IRowsetFastLoad 주위에 래퍼를 만들만한 가치가 있는지 평가 중이므로 .net에 사용할 수 있으므로 응용 프로그램에서 사용할 수 있습니다.SQL에서 대량 데이터 삽입 : OLEDB IRowsetFastLoad 대 Ado.Net SqlBulkCopy

누구나 IRowsetFastLoad가 SqlBulkInsert보다 실제로 성능이 우수한지 알고 있습니다. 그러한 래퍼를 만드는 것이 가치가 있습니까?

답변

2

SqlBulkCopy은 관리되는 동등 물의 IRowsetFastLoad이므로 이와 유사하게 작동해야합니다. 클라이언트에서 일반적으로 OleDB는 바인딩 사용 가능성으로 인해 ADO.Net보다 빠릅니다. API를 통해 데이터를 더 빠르게 전송할 수 있습니다 (버퍼가 미리 알려지고 미리 고정되어 있으므로 memcopy가 필요하지 않음). 할당 됨). ADO.Net은 프로그래밍 모델을 훨씬 쉽게 제공하지만 ADO.Net에서 데이터를 가져올 수는 없습니다. 그러나 가장 중요한 액세스를 제외하고는 차이점을 측정 할 수 없어야합니다.

중요한 점은 서버 액세스에있어 그들은 모두 빠른로드 INSERT BULK API (곧은 T-SQL에서 사용할 수 없음)를 사용하고 실제로 중요한 점을 사용한다는 것입니다.

+0

그래서 실제로 IRowsetFastLoad OLE DB에 대한 .net 래퍼를 만드는 경우, 기본적으로 SqlBulkCopy를 단순히 사용하는 것보다 구성 요소를 더 느리게 수행 할 수있는 차이점을 도입하고 있습니까? –

+0

네이티브/관리 오버 헤드에서 interop 및 마샬링에 대해 생각하지는 못했지만, 맞습니다. 오버 헤드가 추가 될 것입니다. –