2010-08-31 6 views
9

che sto facendo un rapporto indice sul mio MS SQL 2008 banca dati (database Fare clic destro -> Rapporti -> Statistiche Indice di utilizzo)Quando per mantenere un indice - Analizzando stastics utilizzo degli indici in SQL Server 2008

mi dice che uno dei miei indici usi: 88 utente cerca 0 utenti scansioni 6.134.141 aggiornamenti utente

qualcuno può spiegare a me:

  1. quale sia la differenza tra utente cerca e scansioni utenti sono?
  2. Come devo determinare quando mantenere un indice o rilasciarlo a seconda dell'utente cerca + scansioni utente vs aggiornamenti utente?

Penso che in questo caso il costo di mantenimento dell'indice non ne valga la pena.

risposta

2

Un punto importante da notare in primo piano: le statistiche di utilizzo dell'indice vengono reimpostate ogni volta che viene avviato il database. Quindi, è difficile valutare i tuoi 88 tentativi senza sapere quando hai ricominciato l'ultimo. 88 cerca nell'ultima ora è molto diversa da 88 cerca nell'ultimo mese.

  1. Un utente cerca sta cercando una riga o un gruppo particolare di righe nell'indice che corrisponde ai criteri della query. Una scansione utente sta leggendo tutte le righe nell'indice. Per ovvi motivi, le operazioni di ricerca sono preferibili rispetto alle operazioni di scansione.
  2. Non sono a conoscenza di alcuna regola generale che dica "quando il rapporto ricerca/aggiornamento è X, rilascia l'indice". Osserva il tuo indice in termini di questi General Design Guidelines e benchmark prima e dopo l'esecuzione delle tue query per determinare l'impatto della caduta dell'indice.
7
  1. Here is a good article che va oltre cerca e scansioni (e indici in generale). Sarà probabilmente fare un lavoro migliore di qualsiasi post SO .
  2. Può essere un po 'un modulo artistico determinare se è necessario un indice oppure no. Se questi 88 cerca prendere le query assolutamente indispensabili di report da un runtime di 3 ore fino a 30 secondi, quindi conservarle. Penso che il primo passo sarebbe quello di capire quali query li stanno utilizzando, quanto gli indici aiutano quelle query e quanto sono importanti tali query.

snipit dall'articolo (sicuramente dare una lettura però):

Scansioni

un indice di scansione è una lettura completa di tutte le pagine foglia dell'indice. Quando si esegue una scansione dell'indice sull'indice cluster, si tratta di una scansione della tabella in tutto tranne il nome.

Quando l'analisi di query viene eseguita dal processore di query, è sempre una lettura completa di tutte le pagine foglia nell'indice, indipendentemente dal fatto che vengano restituite tutte le righe. Non è mai una scansione parziale.

Una scansione non riguarda solo la lettura dei livelli foglia dell'indice, anche le pagine di livello superiore vengono lette come parte dell'indice di scansione.

cerca

Un indice cercano è un'operazione in cui SQL utilizza la struttura b-tree per individuare un valore specifico o l'inizio di un intervallo di valori. Affinché un indice possa essere possibile, deve esserci un predicato SARGable3 specificato nella query e un indice di corrispondenza (o parzialmente corrispondente). Un indice di corrispondenza è uno in cui il predicato della query ha utilizzato un sottoinsieme a sinistra delle colonne dell'indice. Questo sarà esaminato in modo molto più dettagliato in una parte 3 di questa serie.

L'operazione di ricerca viene valutata a partire dalla pagina principale. Utilizzando le righe nella pagina principale, il processore di query individuerà quale pagina nel successivo livello inferiore dell'indice contiene la prima riga che si sta cercando. Quindi leggerà quella pagina. Se questo è il livello foglia dell'indice, la ricerca finisce lì. Se non è la foglia, il processore di query identifica nuovamente quale pagina nel successivo livello inferiore contiene il valore specificato. Questo processo continua fino al raggiungimento del livello foglia.

Una volta che il processore di query ha individuato la pagina foglia contenente il valore della chiave specificato o l'inizio dell'intervallo specificato di valori chiave, esso viene letto lungo le pagine foglia finché non sono state restituite tutte le righe corrispondenti al predicato.

Problemi correlati