SqlBulkCopy est-il le mauvais choix pour des insertions efficaces à une seule ligne?

c# sqlbulkcopy sql-server windows-services

Question

Bonjour.

J'ai un service que j'écris en C # qui effectue et insère une seule ligne toutes les 15 secondes environ. Cet intervalle peut être défini par l'utilisateur, mais pour l'instant, l'intervalle ciblé est de 15 secondes.

J'ai lu cet article: SqlBulkCopy sur un seul enregistrement? ce qui explique clairement les avantages en termes de débit de l'utilisation d'un insert standard par rapport à l'exécution d'un insert en vrac sur une seule ligne. Mais il mentionne également (ou implique) que l'insertion standard est un peu plus lourde en CPU que l'insertion en bloc.

Comme le service que j’écris est un service d’assistance et que l’insert est artificiellement limité à 1 dans un intervalle donné, je me demande si l’implication ci-dessus justifie l’utilisation de SqlBulkCopy sur un insert normal. Je souhaite évidemment que mon service soit aussi léger que possible.

Réponse d'expert

La réponse dans votre article indique que SqlBulkCopy est 4,4 fois plus lent et prend le double du processeur d'une simple commande SQL. Si vous avez mal interprété la réponse (ou si je l’ai fait), il est indiqué que SqlBulkCopy est plus lourd sur le processeur qu'un insert classique, ce qui est plus logique.

La réponse est simple: respectez la commande SQL si vous êtes sûr à 100% qu’un seul enregistrement doit être inséré.

Même ma bibliothèque C # Bulk Operations n'utilise pas SqlBulkCopy tant qu'elle n'a pas atteint un nombre de lignes spécifique qui est normalement égal à dix, car SqlBulkCopy est trop lourd.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi