Quando aggiornare le statistiche?

Ho ereditato un piano di manutenzione che esegue le seguenti operazioni:

  • Elimina i vecchi dati
  • Verifica lintegrità del database
  • Esegue backup del database e del registro delle transazioni
  • Riorganizza i nostri indici
  • Statistiche degli aggiornamenti
  • Elimina i vecchi backup e i file del piano di manutenzione

Del piano di manutenzione di 23 minuti, laggiornamento delle statistiche richiede ben 13 minuti. Durante questo periodo di 13 minuti, laccesso al database è bloccato (o almeno, la replica da questo DB agli altri nostri è in pausa).

La mia domanda è:

Quando dovremmo essere Aggiornare le statistiche, e perché?

Questo sembra il genere di cose che dovremmo fare meno frequentemente di ogni giorno. Sto cercando di tirarci fuori dalla mentalità “solo perché” di fare cose inutili Manutenzione.

Commenti

  • Con quale frequenza / con quale frequenza le righe vengono inserite / aggiornate / eliminate? Per me questo è il fattore decisivo.
  • @JNK Inseriamo ~ 70.000 righe al giorno in tutto il DB. Aggiorna ~ 100 righe al mese.
  • 1 – Questo è più rilevante se sappiamo da TABELLA quante righe e 2 -come percentuale. 70.000 righe al giorno in una tabella di 1 m sono molto diverse rispetto a una tabella di 500 m
  • Consiglierei di utilizzare qualcosa come ola.hallengren.com / … questa soluzione si limita a ricostruire / riorganizzare e aggiornare ciò che è necessario in questo modo, potresti ridurre il tempo impiegato dal tuo piano di manutenzione e risparmiare anche un sacco di spazio per i log ..

Risposta

Se non hai la finestra di manutenzione, aggiornare le statistiche quotidianamente è probabilmente un po eccessivo . Soprattutto se hai attivato le statistiche di aggiornamento automatico per il database. Nel tuo post originale, hai detto che gli utenti vedono una diminuzione delle prestazioni a causa di questo piano di manutenzione. Non cè altro momento per eseguire questa manutenzione piano? Nessunaltra finestra? Vedo che il tuo piano comprende la riorganizzazione degli indici, quando ricostruisci gli indici? Quando viene eseguita tale operazione, le statistiche vengono aggiornate automaticamente (a condizione che non sia disattivato per dex).

La frequenza esatta con cui aggiornare le statistiche dipende in larga misura dalla quantità di modifiche che i tuoi indici e dati stanno ricevendo . Se sono state apportate poche modifiche (INSERT, UPDATE, DELETE) ai dati, allora potresti avere una pianificazione più rara per il lavoro di aggiornamento delle statistiche.

Un modo per scoprire se le tue statistiche sono obsolete è guardare i piani di esecuzione e se hai stimato che le righe differiscono notevolmente dalle righe effettive restituite allora questa è una buona indicazione che lintervallo deve essere aumentato. Nel tuo caso, stai andando dallaltra parte e un po di prova potrebbe essere utile per te. Aggiorna le statistiche settimanalmente e se stai iniziando a vedere i segni rivelatori di statistiche obsolete, vai da lì.

Se utilizzi le statistiche di aggiornamento automatico per il tuo database, consulta questo riferimento per la soglia di aggiornamento delle statistiche.

Commenti

  • Ricostruiamo gli indici una volta alla settimana.
  • @ Onion-Knight Quindi aggiorni anche le statistiche una volta alla settimana quando ricostruisci i tuoi indici . Potrebbe essere sufficiente se ‘ stai ricostruendo un indice generale nel database.

Risposta

Quando aggiornare le statistiche?

se e solo se aggiornamento automatico delle statistiche non è sufficiente per le tue esigenze. Voglio dire, se la creazione automatica e laggiornamento automatico delle statistiche sono ON e stai ricevendo un piano di query errato perché le statistiche non sono accurate o attuali, potrebbe essere una buona idea avere il controllo sulla creazione e laggiornamento delle statistiche. ma se stai bene con le prestazioni del tuo server sql e i tempi di esecuzione delle query.

allora suggerisco di fermare le Statistiche degli aggiornamenti comando dal tuo Piani di manutenzione

laggiornamento delle statistiche è importante e utile 1. consente a Query Optimizer di SQL Server di produrre costantemente buoni piani di query, mantenendo bassi i costi di sviluppo e amministrazione 2. Le statistiche vengono utilizzate da Query Optimizer per stimare la selettività delle espressioni e quindi la dimensione dei risultati intermedi e finali della query. 3.Buone statistiche consentono allottimizzatore di valutare accuratamente il costo di diversi piani di query e quindi scegliere un piano di alta qualità


Se vuoi aggiornare manualmente le statistiche devi prima sapere Quando le statistiche vengono aggiornate automaticamente

Se Query Optimizer di SQL Server richiede statistiche per una particolare colonna in una tabella che ha subito un aggiornamento sostanziale attività dallultima volta che le statistiche sono state create o aggiornate, SQL Server aggiorna automaticamente le statistiche campionando i valori delle colonne (utilizzando le statistiche di aggiornamento automatico). Laggiornamento automatico delle statistiche viene attivato dallottimizzazione della query o dallesecuzione di un piano compilato e coinvolge solo un sottoinsieme delle colonne a cui si fa riferimento nella query. Le statistiche vengono aggiornate prima della compilazione della query se AUTO_UPDATE_STATISTCS_ASYNC è OFF

qui ci sono articoli carini che parlano di quando le statistiche di aggiornamento vengono attivate nel server SQL

  1. da simple-talk Sezione 13. Quando viene attivato laggiornamento automatico alle statistiche?
  2. support.microsoft Sezione: Automatizzazione della determinazione degli Autostats
  3. msdn.microsoft Sezione: Manutenzione delle statistiche in SQL Server 2008

dopo aver saputo quando le statistiche vengono attivate, ti aiuterà a decidere quando aggiornare manualmente le statistiche

per saperne di più sulle statistiche & il suo effetto sulle prestazioni consiglio BrentOzar e Kimberly in sqlskills ottimi blog & blogger .

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *