C'è un motivo per aggiornare manualmente le statistiche?


19

In SQL Server, le statistiche vengono aggiornate automaticamente quando Auto Update Statisticsin True(che è l'impostazione predefinita). C'è un motivo per aggiornare le statistiche manualmente e in quali circostanze?

Risposte:


21

Certo, se i tuoi dati cambiano più frequentemente della frequenza delle statistiche automatiche (o, diciamo, stai aggiornando frequentemente <20% delle righe, come l'aggiornamento degli stati o dei timestamp di data / ora). O se il tuo tavolo è enorme e non sta cambiando abbastanza per innescare aggiornamenti automatici delle statistiche. Oppure se hai indici filtrati ( poiché la soglia delle statistiche automatiche si basa ancora sulla% di modifica sull'intera tabella, non sulla% di modifica del sottoinsieme di righe nell'indice filtrato ).


+1 per gli indici filtrati. Penso che sia la ragione principale o su set di dati MOLTO grandi. Ho tabelle che inserisco 30m righe al mese, ma è una piccola percentuale, quindi le statistiche normalmente non vengono aggiornate a meno che non le avvii manualmente.
JNK,

+1 Inoltre, lo fai in un programma per ripristinare i contatori, significa meno possibilità al di fuori della finestra di manutenzione.
gbn

7

Un altro paio di motivi (superficiali):

Le statistiche di aggiornamento automatico bloccano la query che ha attivato l'aggiornamento fino a quando le nuove statistiche non sono pronte.

... A meno che non abiliti le statistiche di aggiornamento automatico in modo asincrono. Quindi la query che ha attivato l'aggiornamento non attenderà le nuove statistiche, ma verrà potenzialmente eseguita con le statistiche vecchie e errate.

Mi sono anche imbattuto in alcuni strani problemi di blocco quando un database con alcune tabelle relativamente grandi (44 M righe, 8,5 GB) avrebbe iniziato ad aggiornare le statistiche. Tuttavia, abbiamo rimosso tale autorizzazione prima che potessi davvero rintracciare ciò che stava accadendo.


1
+1 Questo è un ottimo punto sul blocco e sull'opzione asincrona.
Aaron Bertrand

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.