Database
 sql >> Database >  >> RDS >> Database

Visualizzazione del punto critico con Plan Explorer

Il punto di svolta è un termine che ho sentito usato per la prima volta dal guru dell'ottimizzazione delle prestazioni di SQL Server e membro di lunga data del SentryOne Advisory Board Kimberly Tripp:qui ha un'ottima serie di blog. Il punto di non ritorno è la soglia alla quale un piano di query "tira" dalla ricerca di un indice non cluster non coprente all'analisi dell'indice o dell'heap cluster. La formula di base, che non è una regola ferrea in quanto vi sono vari altri fattori che influenzano, è questa:

  • Spesso si verifica un'analisi cluster (o tabella) quando le righe stimate superano il 33% del numero di pagine nella tabella
  • Quando le righe stimate sono inferiori al 25% delle pagine nella tabella, si verifica spesso una ricerca chiave non in cluster
  • Tra il 25% e il 33% può andare in entrambi i modi

Tieni presente che ci sono altri "punti critici" dell'ottimizzatore, ad esempio quando si tratta di una copertura indice passerà da una ricerca a una scansione, o quando una query andrà in parallelo, ma quello su cui ci concentriamo è l'indice non cluster non coprente scenario perché tende ad essere il più comune:è difficile coprire ogni query! È anche potenzialmente più pericoloso per le prestazioni e quando senti qualcuno fare riferimento al punto di non ritorno dell'indice di SQL Server, questo è in genere ciò che significa.

Il punto critico nelle precedenti versioni di Plan Explorer

Plan Explorer ha mostrato in precedenza l'effetto netto del punto di non ritorno quando lo sniffing dei parametri è in gioco sull'Analisi dell'indice scheda, in particolare tramite l'Operazione stimata riga nei Parametri riquadro:

L'operazione stimata per i parametri compilati e di runtime, in base al numero di righe

Se non hai ancora esplorato il modulo Analisi dell'indice, ti incoraggio a farlo. Sebbene il diagramma del piano e altre funzionalità di Plan Explorer siano eccezionali, francamente, Index Analysis è il luogo in cui dovresti passare la maggior parte del tuo tempo a ottimizzare query e indici. Dai un'occhiata alla revisione approfondita di funzionalità e scenari di Aaron Bertrand qui e un ottimo tutorial sull'indice di copertura di Devon Leann Wilson qui.

Dietro le quinte, eseguiamo la matematica del punto critico e prevediamo l'operazione di indice (ricerca o scansione) in base alle righe stimate e al numero di pagine nella tabella sia per i parametri compilati che per quelli di runtime, quindi codifichiamo a colori le celle associate in modo che puoi vedere rapidamente se corrispondono. In caso contrario, come nell'esempio sopra, può essere un forte indicatore di un problema di sniffing dei parametri.

L'istogramma delle statistiche il grafico riflette la distribuzione dei valori per la chiave iniziale dell'indice utilizzando colonne per righe uguali (arancione) e righe di intervallo (verde acqua). Questi sono gli stessi valori che otterrai da DBCC SHOW_STATISTICS o sys.dm_db_stats_histogram . Le parti della distribuzione colpite da entrambi i parametri compilati e di runtime vengono evidenziate per darti un'idea approssimativa di quante righe sono coinvolte per ciascuna. Seleziona semplicemente il Valore compilato o Valore di runtime colonna per vedere l'intervallo selezionato:

Grafico dell'istogramma che mostra l'intervallo raggiunto dai parametri di runtime

Nuovi controlli e elementi visivi

Le funzionalità di cui sopra erano belle, ma per un po' ho sentito che c'era di più che potevamo fare per rendere le cose più chiare. Quindi, nell'ultima versione di Plan Explorer (2020.8.7), la parte inferiore del riquadro Parametri ha alcuni nuovi controlli con elementi visivi associati sul grafico dell'istogramma:

Nuovi controlli per gli istogrammi

Tieni presente che l'istogramma visualizzato per impostazione predefinita è relativo all'indice utilizzato dalla query per accedere alla tabella selezionata, ma puoi fare clic su qualsiasi altra intestazione dell'indice o colonna della tabella nella griglia per visualizzare un altro istogramma.

Intervallo di punti di non ritorno

L'intervallo di punti di non ritorno casella di controllo attiva o disattiva la banda rossa chiara mostrata sul grafico dell'istogramma:

Attiva/disattiva la banda dell'intervallo del punto di non ritorno

Se le righe stimate sono al di sotto di questo intervallo, l'ottimizzatore preferirà una ricerca + ricerca e al di sopra una scansione della tabella. All'interno della gamma c'è chiunque può indovinare.

Righe stimate/effettive

Le righe stimate/effettive la casella di controllo alterna la visualizzazione delle righe stimate (dai parametri compilati) e delle righe effettive (dai parametri di runtime). Le frecce nel grafico sottostante illustrano la relazione tra questo controllo e gli elementi associati:

Attiva/disattiva le righe stimate e effettive sul grafico dell'istogramma

In questo esempio, è chiaro che le righe stimate sono al di sotto del punto di non ritorno e le righe effettive restituite sono al di sopra, il che si riflette nella differenza tra le operazioni stimate ed effettive elencate (Ricerca vs Scansione). Questo è il classico sniffing dei parametri, illustrato!

In un post futuro illustrerò in che modo questo è correlato a ciò che vedi sul diagramma del piano e sulla griglia delle dichiarazioni. Nel frattempo, ecco un file di sessione Plan Explorer che contiene questo esempio (sniffing dei parametri Seek-to-scan) e un esempio Scan-to-seek. Entrambi sfruttano il database ampliato di WideWorldImporters.

Righe dell'intervallo o righe dell'intervallo medio

Le versioni precedenti di Plan Explorer impilavano le righe uguali e le righe dell'intervallo in una colonna per rappresentare il numero totale di righe in un bucket dell'istogramma. Funziona bene quando hai una disuguaglianza o un predicato di intervallo come mostrato sopra, ma per i predicati di uguaglianza non ha molto senso. Quello che vuoi davvero vedere sono le righe dell'intervallo medio poiché è ciò che l'ottimizzatore utilizzerà per la stima. Sfortunatamente, non c'era modo di ottenerlo.

Nel nuovo istogramma Plan Explorer, invece di una serie di colonne impilate, ora utilizziamo colonne raggruppate con le righe uguali e le righe dell'intervallo affiancate e tu controlla se mostrare le righe dell'intervallo totale o medio in base alle esigenze utilizzando le Righe dell'intervallo/Righe dell'intervallo medio selettore. Ne parleremo presto...

Conclusione

Sono davvero entusiasta di queste nuove funzionalità e spero che le troviate utili. Provali scaricando il nuovo Plan Explorer. Questa è stata solo una breve introduzione e non vedo l'ora di coprire alcuni scenari diversi qui. Come sempre fateci sapere cosa ne pensate!