J'ai finalement réussi à faire fonctionner mon lot d'insertion et maintenant je joue avec la taille du lot, mais je ne vois aucune différence de performance entre une valeur de 50 et une valeur de 10000. Cela semble très étrange pour moi, mais je ne sais pas ce qui se passe derrière la scène, donc ce pourrait être un comportement normal.Comment définir DataAdapter.UpdateBatchSize sur une valeur "optimale"?
J'insère 160k lignes dans une table et le temps moyen pour mes valeurs testées est de 115 +/- 2 secondes. Sans traitement par lots, il faut 210 secondes, donc je suis assez satisfait de l'amélioration. La table cible est:
CREATE TABLE [dbo].[p_DataIdeas](
[wave] [int] NOT NULL,
[idnumber] [int] NOT NULL,
[ideaID] [int] NOT NULL,
[haveSeen] [bit] NOT NULL CONSTRAINT [DF_p_DataIdeas_haveSeen] DEFAULT ((0)),
CONSTRAINT [PK_p_DataIdeas] PRIMARY KEY CLUSTERED
(
[wave] ASC,
[idnumber] ASC,
[ideaID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
) ON [PRIMARY]
J'ai lu What to look for when setting UpdateBatchSize et la réponse était simplement tester deux valeurs différentes. Je peux comprendre cela, mais ne devrait-il pas être possible de calculer ou au moins de deviner une bonne valeur si vous connaissez la conception de la table, la question SQL et les données qui sont sur le point d'être insérées?
Y a-t-il des pratiques exemplaires que quelqu'un peut recommander?