Ho finalmente ottenuto il mio batch di inserimenti per funzionare e ora mi sono divertito con le dimensioni del batch, ma non vedo differenze nelle prestazioni tra un valore di 50 e un valore di 10000. Questo sembra molto strano per me, ma non so cosa succede dietro la scena, quindi potrebbe essere un comportamento normale.Come si imposta DataAdapter.UpdateBatchSize su un valore "ottimale"?
Sto inserendo righe 160k in una tabella e il tempo medio per i miei valori testati è 115 +/- 2 secondi. Senza batch ci vogliono 210 secondi, quindi sono abbastanza soddisfatto del miglioramento. La tabella di destinazione è:
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]
ho letto What to look for when setting UpdateBatchSize e la risposta è stata semplicemente per testare un paio di valori diversi. Posso capirlo, ma non dovrebbe essere possibile calcolare o quantomeno stimare un buon valore se si conosce la struttura della tabella, la domanda SQL e i dati che stanno per essere inseriti?
Esistono buone pratiche che qualcuno può consigliare?