[.net] Quelle est la taille de lot recommandée pour SqlBulkCopy?



Answers

C'est un problème que j'ai aussi passé du temps à examiner. Je cherche à optimiser l'importation de fichiers CSV volumineux (16+ Go, 65+ millions d'enregistrements et en croissance) dans une base de données SQL Server 2005 à l'aide d'une application de console C # (.Net 2.0). Comme Jeremy a déjà souligné , vous devrez faire quelques ajustements pour votre situation particulière, mais je vous recommande d'avoir une taille de lot initiale de 500, et de tester les valeurs à la fois au-dessus et au-dessous.

J'ai reçu la recommandation de tester les valeurs comprises entre 100 et 1000 pour la taille de lot à partir de ce message sur le forum MSDN , et j'étais sceptique. Mais quand j'ai testé des tailles de lots entre 100 et 10 000, j'ai trouvé que 500 était la valeur optimale pour mon application. La valeur 500 pour SqlBulkCopy.BatchSize est également recommandée here .

Pour optimiser davantage votre opération SqlBulkCopy, consultez ce conseil MSDN ; Je trouve que l'utilisation de SqlBulkCopyOptions.TableLock aide à réduire le temps de chargement.

Question

Quelle est la taille de lot recommandée pour SqlBulkCopy ? Je cherche une formule générale que je peux utiliser comme point de départ pour l'optimisation des performances.




Tout dépend de votre implémentation.

Quel genre de vitesse pouvez-vous attendre sur votre réseau? L'utilisez-vous dans Forms ou ASP.Net? Avez-vous besoin d'alerter l'utilisateur de la progression? Quelle est la taille de l'emploi total?

D'après mon expérience, l'exécution d'une copie en bloc sans spécifier de taille de lot entraînera des problèmes de dépassement de délai. J'aime commencer avec quelque chose comme 1000 enregistrements et faire quelques ajustements à partir de là.




Related