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

Come generare un piano di esecuzione in SQL Server

I piani di esecuzione delle query SQL vengono generati quando un Query Optimizer determina il modo più efficiente per fornire i dati richiesti da una query. Questi piani sono una rappresentazione delle operazioni di database in esecuzione da una query, che mostrano quali oggetti utilizza la query, i tipi di utilizzo e come vengono utilizzati.

È risaputo che le query con prestazioni scadenti sono un indicatore chiave che qualcosa non va all'interno di un database. Quindi guardare "sotto il cofano" del piano di esecuzione di una query è uno dei modi migliori per determinare la causa del problema di prestazioni.

Le informazioni disponibili in un piano di esecuzione SQL sono preziose per i DBA che risolvono i problemi di prestazioni delle query di SQL Server perché consentono loro di arrivare alla causa principale del problema e di ottimizzare la query secondo necessità.

L'esame dei piani di esecuzione SQL è uno dei primi passaggi nell'ottimizzazione delle prestazioni perché il piano evidenzia chiaramente le cause più probabili di problemi all'interno di una query, inclusi operatori costosi, un numero insolito di record che scorrono tra operatori e operatori aggiuntivi.

I DBA traggono vantaggio anche dagli avvisi del piano di esecuzione che avvisano gli utenti di problemi come gli spill di database temporanei e gli indici mancanti.

Tipi di piani di esecuzione SQL

Esistono due tipi principali di piani di esecuzione SQL:piani di esecuzione stimati e piani di stima effettivi.

I piani di esecuzione stimati sono meglio descritti come una sorta di previsioni meteorologiche. Come suggerisce il nome, i piani di esecuzione stimati utilizzano calcoli, statistiche e altri parametri approssimativi per stimare i passaggi che potrebbero essere seguiti da SQL Server Engine per eseguire la query inviata dopo l'analisi della query.

Non è necessario eseguire la query per generare questo tipo di piano di esecuzione, quindi è utile per query complesse per le quali la generazione di un piano di esecuzione effettivo richiederebbe molto tempo.

I piani di esecuzione effettivi eseguono la query inviata e quindi visualizzano i passaggi che si sono verificati durante l'esecuzione. Questo tipo di piano visualizza i calcoli reali ei passaggi effettivi (non stimati) seguiti da SQL Server Engine.

Poiché questo tipo di piano di esecuzione esegue effettivamente la query, è una buona scelta per la risoluzione dei problemi di prestazioni delle query.

Come generare un piano di esecuzione SQL

Hackernoon fornisce una succinta descrizione di come generare piani di esecuzione stimati ed effettivi. Il processo può essere ridotto ai seguenti passaggi:

Genera un piano di esecuzione stimato

  • Vai al database
  • Evidenzia la query
  • Fai clic su "Query"
  • Fai clic su "Visualizza piano di esecuzione stimato" o utilizza la scorciatoia Ctrl + L

Genera un piano di esecuzione effettivo

  • Vai al database
  • Evidenzia la query
  • Fai clic su "Query"
  • Fai clic su "Includi piano di esecuzione effettivo" o utilizza la scorciatoia Ctrl + M

Troverai una spiegazione dettagliata di come generare piani di esecuzione stimati e piani di esecuzione effettivi nella documentazione ufficiale di Microsoft.

Perché i piani di esecuzione SQL stimati ed effettivi possono essere diversi

In generale, i piani di esecuzione stimati ed effettivi saranno simili. Tuttavia, ci sono occasioni in cui sono diversi. Ciò è normale e si verifica perché le statistiche del database ei dati effettivi sono diversi. Queste differenze possono essere introdotte attraverso diversi canali:

Parallelismo

Il costo del piano può causare la creazione di due piani di esecuzione per una query inviata. Il motore di SQL Server sceglierà se utilizzare o meno il piano parallelo, quindi è possibile che un piano utilizzi il piano parallelo e l'altro il piano seriale.

Statistiche non aggiornate

Quando inserisci dati in ed elimini dati da tabelle e indici o modifichi la tabella o lo schema dell'indice, le statistiche cambiano. Se le statistiche non vengono aggiornate regolarmente, il piano di esecuzione effettivo sarà diverso dal piano di esecuzione stimato.

Piano stimato non valido

Se una query contiene un'istruzione che richiede una tabella temporanea che esiste solo se la query viene eseguita, la generazione di un piano di esecuzione stimato creerà un errore perché non è stata eseguita alcuna query. La stessa query funzionerebbe correttamente nel piano di esecuzione effettivo perché la query è stata eseguita.

I piani di esecuzione SQL sono una risorsa preziosa per la risoluzione dei problemi di prestazioni di SQL Server. Sapere come generare piani di esecuzione SQL stimati ed effettivi è uno strumento essenziale per qualsiasi DBA incaricato di ottimizzare le query per prestazioni ottimali.