Domanda

Attualmente mi trovo di fronte a un database di produzione di SQL Server in cui qualcuno aveva aggiunto proposte indice quasi tutte mancanti da DTA.

Modulo Come determinare se un Indice è richiesto o necessario ho imparato, che non ci sono punti di vista DMV, che possono essere utilizzati per le informazioni sull'uso rinviare indice reale così come indici mancanti.

Lo script da Jason Strate utilizza solo le informazioni correnti da quella vista, mentre Divertimento per il giorno -! automatizzato Auto-indicizzazione salva alcune informazioni da quelle viste in tabelle.

DTA dall'altro lato richiede una pianificazione quando eseguire il profiler, selezionare ciò che al profilo e ha qualche impatto sulle prestazioni durante l'esecuzione.

La mia impressione è che l'utilizzo DTA come primo strumento di sintonizzazione è semplicemente uno spreco di tempo e di come i suoi risultati non coprono l'utilizzo completo del database, sono difficili da interpretare per i novizi e può portare ad aggiungere troppo gli indici con impatto negativo sulle prestazioni in scrittura, mentre la raccolta dei dati via DMV richiede poca preparazione e copre quasi l'intero utilizzo del database dall'ultimo riavvio.

La mia domanda si concentra su quale strategia di proporre alla gestione. Voglio mettere a fuoco i punti di vista di valutazione DMV nel primo passo e ignorano completamente DTA.

È stato utile?

Soluzione

Credo che sia più intelligente per costruire qualcosa che monitora il DMV e rintraccia i loro dati nel corso del tempo (forse prendendo uno snapshot del l'utilizzo degli indici e dei dispersi DMV indice ogni sera - potrebbe avere senso per includere procedure statistiche pure) che correre un po ' strumento per un breve periodo ogni volta che pensi di farlo. Otterrete un quadro molto meglio nel corso di un periodo più lungo, non solo quello che sono in questo momento, ma anche come sono cambiati nel corso del tempo.

Fare attenzione a non far cadere gli indici che sembrano non utilizzato, ma può essere agganciato a qualche rapporto che solo viene chiamato una o due volte in un ciclo economico -. Potrebbe essere più importante della sua frequenza potrebbe suggerire

Altri suggerimenti

DTA aiuta per aggiungendo indici ma non rimozione indici. Se siete di fronte a un database che ha già più di, diciamo, 5 indici per tabella, il DTA non è la risposta. Ti consigliamo di utilizzare i DMV per valutare l'utilizzo di indici esistenti.

Ecco uno script con un video tutorial che ho fatto un po 'indietro:

http: //www.toadworld.com/platforms/sql-server/w/wiki/10062.find-indexes-not-in-use.aspx

Secondo questo ( "E" è indice di una query DMV-based)

  • Non è così intelligente come il motore di database Ottimizzazione guidata. Se avete individuato una query che si sa è costoso e ha bisogno di qualche aiuto, non lasciarmi sfuggire DTA solo perché i DMV indice mancante non hanno avuto qualche suggerimento. DTA potrebbe essere ancora in grado di aiutare.
  • I DMV indice mancante non prendono in considerazione il sovraccarico che i nuovi indici possono creare (spazio su disco, leggero impatto sulla inserto / perf eliminazione, ecc). DTA non tenerne conto, però.
  • La colonna "improvement_measure" in uscita di questa query è un indicatore di massima del miglioramento (stimato) che potrebbe essere visto se l'indice è stato creato. Questo è un numero adimensionale, e ha senso solo relativamente lo stesso numero per altri indici. (E 'una combinazione delle avg_total_user_cost, avg_user_impact, user_seeks, e user_scans colonne in sys.dm_db_missing_index_group_stats.)
  • I DMV indice mancante non fanno raccomandazione sul fatto che un indice proposto dovrebbe essere cluster o non cluster. Questo ha ramificazioni in tutto il carico di lavoro, mentre questi DMV si concentrano solo sugli indici che potrebbero trarre beneficio singole query. (DTA può fare questo, però.)
  • Non vi consiglio di partizionamento.
  • E 'possibile che i DMV non può raccomandare l'ordine delle colonne ideali per gli indici su più colonne.
  • Il DMV tiene traccia delle informazioni su non più di 500 indici mancanti.

Nessuna esperienza di questo e non so di qualsiasi riferimento alternativo, mi dispiace.

Io tendo a bastone con DMV perché DTA ha bisogno di te db_owner. Su prod (come DBA sviluppatore, non un DBA di produzione) non ho autorizzazioni per eseguire questa ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top