SqlBulkCopy가 효율적인 단일 행 삽입을위한 잘못된 선택입니까?

c# sqlbulkcopy sql-server windows-services

문제

좋은 아침.

나는 C #에서 15 초마다 하나의 행을 수행하고 삽입하는 서비스를 가지고있다. 이 간격은 사용자가 지정할 수 있지만 현재 15 초가 대상 간격입니다.

이 기사를 읽었습니다 : 하나의 레코드에 SqlBulkCopy? 이것은 단일 행 벌크 삽입을 수행하는 것보다 일반 삽입물을 사용할 때의 처리량 이점을 명확하게 설명합니다. 그러나 일반 삽입물이 대량 삽입물보다 CPU에 약간 무겁다는 것도 언급합니다.

필자가 쓰는 서비스는 지원 서비스이며 인서트는 인위적으로 주어진 간격에서 1로만 제한되므로 위의 의미가 일반 삽입보다 SqlBulkCopy 사용에 대한 정당성인지 여부가 궁금합니다. 분명히 나는 ​​내 서비스가 가능한 한 가벼운 것을 원한다.

전문가 답변

기사의 대답에 따르면 SqlBulkCopy는 4.4 배 느리고 간단한 SQL 명령의 CPU가 두 배가됩니다. 당신은 답을 잘못 읽었거나 (또는 ​​그랬습니다), SqlBulkCopy는 일반적인 의미의 삽입보다 CPU에서 더 무겁다고합니다.

대답은 간단합니다. SQL 명령을 사용하면 100 개의 레코드 만 삽입하면됩니다.

심지어 내 라이브러리 인 C # Bulk Operations 는 SqlBulkCopy가 너무 무거워서 일반적으로 10 개의 특정 행에 도달 할 때까지 SqlBulkCopy를 사용하지 않습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.