Perché disabilitare l'aggiornamento automatico delle statistiche?


13

Ho appena appreso che un'azienda client per la quale lavoro ha deciso di mantenere disattivate le opzioni di statistiche di aggiornamento automatico per alcuni dei loro server SQL e i DBA che risolvono manualmente i problemi di prestazioni quando si presentano.

Tuttavia, questo tipo di non ha senso per me. Perché vorresti impedire l'aggiornamento delle statistiche?

Risposte:


11

Il mio consiglio:

  • Lascia su "statistiche aggiornamento automatico" attivo (fino a quando non ti imbatti in un'ottima ragione per non farlo): non vuoi una grande eliminazione nel bel mezzo di una giornata per eliminare i piani di query fino alla successiva esecuzione della manutenzione.
  • Tuttavia, pianificare le statistiche di manutenzione / aggiornamento dell'indice in un momento di tranquillità. sp_updatestatsaggiornerà per te tutte le statistiche per tutte le tabelle di un database, ma ciò comporterà anche ricompilamenti di proc memorizzati, quindi scegli attentamente il tuo tempo (cioè sp_updatestatsprima che il tuo rapporto di fine mese sia probabilmente non ottimale).

La frequenza con cui è necessario eseguire le statistiche di manutenzione / ricostruzione dell'indice dipende dal carico del database, in particolare dalla frequenza di modifica dei dati (ad es. INSERT/ UPDATE/ DELETE). Se stai modificando i dati in tutto lo show (ovvero una tabella di gestione temporanea per un processo batch settimanale), probabilmente vorrai aggiornare le statistiche / riorganizzare gli indici ogni notte. Se i tuoi dati sono piuttosto più statici, puoi probabilmente renderli un programma settimanale o quindicinale.


7

L'ho visto solo una volta con un'app cattiva che aveva un heap mal indicizzato e un ETL pesante.
Questa era spazzatura e fortunatamente non mia.

Altrimenti, non c'è motivo.

Se ricevi aggiornamenti statistici in momenti inappropriati, significa che stai effettuando una manutenzione errata dell'indice / delle statistiche o che hai enormi eliminazioni / carichi che raggiungono la soglia.

Con SQL Server 2005+ è possibile rinviare comunque l'aggiornamento delle statistiche.
Vedi "Quando utilizzare gli aggiornamenti statistici sincroni o asincroni"

Sarebbe interessante vedere quale articolo hanno seguito o letto per fare questa scelta ...


È forse un problema legacy? La manutenzione delle statistiche era diversa in 2k?
JNK,

@JNK: IIRC alcune modifiche alla soglia di cambio riga ma dovrei cercarlo ... ah sì, ora tracciato per colonna non per tabella msdn.microsoft.com/en-us/library/ms190283.aspx
gbn

È del 20% nel 2008?
JNK,


20% + 500 per> 500 per colonna da SQL Server 2005+
gbn

7

L'unica volta che ho disattivato le statistiche automatiche è stato quando ho usato alcuni comandi privi di documenti per creare statistiche false che non volevo che il sistema cancellasse mentre venivano caricati i dati. Questo è stato un caso MOLTO marginale.


5

Ai vecchi tempi (SQL Server 2000), con l'impostazione delle statistiche di aggiornamento automatico attivata, si potevano verificare grandi "pause" nelle applicazioni OLTP quando SQL decise di effettuare un aggiornamento delle statistiche.

Da SQL Server 2005 in poi c'è un'opzione asincrona che non si tradurrà nella "pausa" quando le statistiche sono obsolete e successivamente ricompilate. Le statistiche verranno ricompilate in modo asincrono per la prossima volta che saranno richieste.

Tenere presente, tuttavia, che esiste un equilibrio: per insiemi di dati di grandi dimensioni è possibile che la query corrente tenga conto delle statistiche più aggiornate, poiché la query potrebbe richiedere tempi più lunghi in modo esponenziale con un piano di query inefficiente.

È inoltre possibile monitorare il numero di ricompilazioni al secondo e altre metriche delle prestazioni cruciali utilizzando i contatori perfmon pubblicati da SQL Server, come si suol dire, la prova è nel budino.


4

Quanto sono attivi i sistemi?

Se sono per lo più sistemi di lettura che potresti ottenere senza aggiornamento, se succede a farlo manualmente quando cambiano i dati (inserisci, aggiorna, elimina).

Tuttavia, per le migliori pratiche, si consiglia di continuare perché penso che sarebbe raro che si trattasse di un problema di prestazioni. Vorrei probabilmente inviare loro articoli e post di blog che suggeriscono che venga lasciato acceso. Kimberly Tripp ne ha di buoni.


4

Mentre non contraddirò mai né disdegnerò intenzionalmente MrDenny in alcun modo (troppo rispetto per le sue conoscenze e contributi alla comunità) ho notato la documentazione MS che consiglia di disattivare le statistiche di aggiornamento automatico.

Al bagagli e SQL Server la pianificazione della capacità e della configurazione (SharePoint Server 2010) MS consiglia di impostare fuori.

Ho anche letto la stessa raccomandazione di MS per le versioni precedenti di SP ma non riesco a trovare i collegamenti proprio ora.

Ma io NON sono un DBA SP Expert, quindi potresti anche voler controllare cosa ha da dire Chun Liu, MS Permier Field Engineer a Chun Liu su SharePoint o semplicemente ignorare questo post e lasciarlo attivo .


5
Il tuo consiglio è specifico per i database di SharePoint, non è generalmente applicabile a tutte le installazioni di SQL Server.
Simon Righarts,

0

Di solito li spegni solo se hai un metodo per aggiornarli da solo. Lo faccio tutto il tempo poiché abbiamo bisogno di un campionamento migliore o semplicemente diverso rispetto alle statistiche automatiche. Questo è abbastanza comune ma non lo spegni e non fai nient'altro.

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.