Venerdì scorso ho tenuto un webinar su Plan Explorer 3.0, le nuove funzionalità e perché abbiamo deciso di eliminare l'edizione PRO e regalare tutte le funzionalità gratuitamente . Se te lo sei perso, puoi guardare il webinar qui:
- Webinar Plan Explorer 3.0
Ci sono state molte grandi domande presentate e cercherò di affrontarle qui. Abbiamo anche posto alcune delle nostre domande in diversi punti durante la presentazione e gli utenti hanno chiesto i dettagli di queste, quindi inizierò con le domande del sondaggio. Abbiamo avuto un picco di 502 partecipanti e indicherò nei grafici sotto quante persone hanno risposto a ciascuna domanda. Poiché la prima domanda è stata posta prima che il webinar iniziasse tecnicamente, un numero minore di persone ha risposto a quella.
Domande del pubblico
D:Sono disponibili esempi di codice?
R: Sì, i tre file di sessione che ho usato per le mie demo sono disponibili qui:
- Pianifica le demo di webinar di Explorer 3.0
Puoi aprirli nell'ultima build di Plan Explorer, ma se desideri eseguire nuovamente una query in locale, avrai bisogno di AdventureWorks2014 (con lo script di ingrandimento di Jonathan Kehayias) e/o del nuovo database di esempio di Wide World Importers.
D:Quindi tutto ciò che viene mostrato oggi è nel nuovo Plan Explorer unificato e gratuito? In tal caso, qual è il nuovo modello di entrate della tua azienda?R: Sono sempre sorpreso quando mi imbatto in persone che pensano che tutto ciò che offriamo sia Plan Explorer (li vedo di persona e c'erano anche molti commenti simili sul post del blog di Greg). Il nostro vero pane quotidiano è nella nostra piattaforma di monitoraggio e speriamo che la tua esperienza positiva con Plan Explorer ti porti a provare anche le nostre altre soluzioni.
D:Utilizziamo ancora SQL Server 2008. Ci sono vantaggi nell'utilizzo di PE rispetto a SSMS?R: Sì, anche se ti perderai alcune funzionalità (come il profilo Live Query), sono disponibili molte più informazioni rispetto a SSMS e facciamo di tutto per rendere molto più individuabili problemi specifici.
D:Il profilo Live Query funzionerà per SQL Server 2014?R: Sì, a condizione che venga applicato il Service Pack 1, poiché la funzionalità si basa su un DMV aggiunto in SQL Server 2014 SP1.
D:Quali sono le limitazioni rispetto a SQL Server 2012? Posso utilizzare questo strumento?R: Assolutamente. La limitazione che ho sollevato durante il webinar su SQL Server 2012 e versioni precedenti è che non sono in grado di acquisire i dati del profilo Live Query.
D:I dati vengono raccolti solo per SQL Server 2014 e versioni successive? Cosa succede se SQL Server 2014 è installato ma la compatibilità è impostata su 2012?R: Sì, il profilo Live Query (e i grafici delle risorse) funziona in SQL Server 2014 (con almeno SP1), SQL Server 2016 e database SQL di Azure. Non è influenzato dal livello di compatibilità.
D:Quale versione di SQL Server è necessaria per recuperare le informazioni sulle statistiche di attesa?
R: La raccolta delle statistiche di attesa si basa su una sessione di eventi estesi, quindi è necessario essere in esecuzione su SQL Server 2008 o versioni successive ed eseguire nel contesto di un utente o accedere con autorizzazioni sufficienti per creare ed eliminare una sessione di eventi estesi (CONTROL SERVER
in SQL Server 2008 e 2008 R2 e ALTER ANY EVENT SESSION
in SQL Server 2012 e versioni successive).
R: C'erano molte variazioni su queste due domande e, a quanto pare, le persone stavano giocando attivamente con la nuova versione durante il webinar e non vedevano né i dati dell'analisi dell'indice né i dati del profilo di query live. Se hai un piano esistente acquisito da SSMS o una versione precedente di Plan Explorer, non ci saranno informazioni da visualizzare.
Per raccogliere Analisi dell'Indice dati, devi generare un piano stimato o effettivo da Plan Explorer. Per visualizzare una griglia di colonne e indici, devi scegliere un'operazione selezionata:nell'elenco a discesa nella parte superiore della scheda Analisi dell'indice.
Per raccogliere il profilo di query in tempo reale dati, devi generare un piano effettivo da Plan Explorer ed essere in esecuzione su 2014 SP1 o versioni successive. Devi anche assicurarti di aver selezionato l'opzione "Con profilo query live" (vedi immagine a destra) e attendere che l'esecuzione della query finisca prima che i grafici vengano visualizzati. In una versione futura, i grafici verranno visualizzati in tempo reale, ma in questa versione lo facciamo dopo che tutti i dati sono stati raccolti.
D:Il profilo Live Query funziona sui database clonati in SQL Server 2014 SP2?R: Sì, funzionerà, tuttavia non fornirà molte informazioni poiché un database clonato è vuoto:vedrai le stime corrette nel piano, ma i valori effettivi saranno tutti 0, quindi le metriche di runtime non rappresenteranno alcun realistico o colli di bottiglia significativi. A meno che tu non stia popolando il clone con dati alternativi, come Erin Stellato promuove in un post precedente. Tieni inoltre presente che se desideri che i piani di query riflettano le dimensioni reali dei dati di produzione, assicurati che tutte le forme di statistiche automatiche siano disattivate, altrimenti verranno aggiornate durante l'esecuzione delle query e quindi tutte le stime saranno 0.
D:La nuova versione di Plan Explorer funziona con SQL Server 2016?R: Sì. Supportiamo tutti i nuovi operatori del piano di SQL Server 2016 e altre modifiche al piano di presentazione (vedi il mio post "Plan Explorer Support for SQL Server 2016") e il componente aggiuntivo funziona anche con l'ultima versione di SSMS (vedi il mio post, "Annuncio del supporto aggiuntivo Plan Explorer per SSMS 2016".
D:Quindi anche un piano di esecuzione effettivo in SSMS è etichettato con stimato costi?R: Sì, è giusto. Quando si acquisiscono i dati del profilo di Live Query, è possibile modificare le percentuali di costo per tutti gli operatori, perché sappiamo con un grado di accuratezza significativo quanto lavoro effettivo ha eseguito ciascuna operazione (la query deve tuttavia essere eseguita più a lungo di una soglia). Ciò può essere particolarmente utile se si sta risolvendo un problema di I/O, poiché le stime non sembrano mai tenere in considerazione i colli di bottiglia di I/O. Il grafico seguente scorre le stime originali (possiamo sempre mostrarti cosa ti avrebbe detto SSMS), i valori effettivi dopo il ricalcolo dei costi e gli effettivi dopo il ricalcolo dei costi e la modifica dei costi in "per I/O" e le larghezze delle linee in "per dimensione dei dati":
D:Aprivo il mio piano prodotto da SSMS in Plan Explorer, ma da quello che Aaron ha appena mostrato, ho capito correttamente che dovevo eseguire le mie query (durante l'ottimizzazione) da Plan Explorer?
R: Ho affrontato questa domanda nel webinar, ma per essere chiari, penso che ci siano due passaggi nell'evoluzione di una query:(1) garantire risultati corretti e (2) ottimizzazione delle prestazioni. Sono fermamente convinto che attualmente dovresti usare SSMS per (1) e Plan Explorer per (2). Ho sostenuto a lungo che una volta che le persone sono sicure di avere risultati corretti, dovrebbero ottimizzare generando effettivi piani di esecuzione da Plan Explorer, perché raccogliamo molte più informazioni sul runtime per te. Queste informazioni sul runtime sono particolarmente utili se condividi i tuoi piani sul nostro sito di domande e risposte, perché rendono molto più evidenti tutte le metriche e i potenziali colli di bottiglia.
D:Quali sono le percentuali sotto l'operatore... per esempio quel 2.885% sotto la funzione?R: Tale percentuale non è un costo, ma piuttosto la percentuale di righe effettivamente elaborate rispetto alla stima. In questo caso, SQL Server ha stimato che la funzione avrebbe restituito 10.000 righe, ma in fase di esecuzione ne ha restituite quasi 300.000! Puoi vedere un suggerimento se passi il mouse solo su quel numero % e puoi vedere le differenze stimate nel conteggio delle righe nel suggerimento per l'operatore o in altre griglie come Operazioni principali (la funzione ora restituisce un numero di righe diverso rispetto a prima durante la demo):
D:Puoi minimizzare o nascondere la parte di riproduzione per avere più spazio per il piano stesso?
R: Sì, tutti i nostri pannelli sono regolabili; molti hanno una puntina da disegno che alterna tra statico e nascondi automaticamente, la maggior parte dei pannelli può essere trascinata (proprio come in Visual Studio, SSMS, ecc.) E il pannello di riproduzione in particolare ha una piccola freccia in alto al centro che ti consente per mostrare/nascondere rapidamente:
D:Riesci a vedere il blocco di codice offensivo direttamente dal piano?
R: Non sono sicuro di interpretare correttamente la domanda, ma tutti i nostri pannelli sono sensibili al contesto e la dichiarazione per il piano attualmente in esame è mostrata sia nella griglia Dichiarazione che nel pannello Dati testo:
Se il testo dell'istruzione non è completamente visibile a causa della lunghezza, puoi sempre fare clic con il pulsante destro del mouse su quella cella e scegliere Copia istruzione in Copia testo comando, quindi passare a quella scheda. Oppure, se non desideri sovrascrivere il contenuto corrente della scheda Testo del comando, scegli Copia> Cella e incolla in una nuova sessione, SSMS o un altro editor.
D:Come posso interrompere un "Ottieni piano effettivo" se ho avviato una query di 1 ora per errore?R: Se una query è attualmente in esecuzione, è presente un pulsante Interrompi sulla barra di stato, in basso a sinistra:
D:Non sarebbe meglio usare DROP_EXISTING =ON invece di eliminare prima un indice e crearne uno nuovo?
R: Abbiamo sicuramente in programma di rendere lo scripting dell'indice più solido in futuro, incluse opzioni come DROP_EXISTING e ONLINE.
D:Questo si collega a SentryOne?R: Tutte le funzionalità di Plan Explorer sono disponibili anche nel client SentryOne. Non è tecnicamente necessario installare Plan Explorer se si dispone del client, tranne per il fatto che gli aggiornamenti vengono inviati in base a una pianificazione diversa, quindi in molti casi potrebbe avere senso averli entrambi installati.
Tieni presente che i piani che raccogliamo per te durante le attività di monitoraggio sono piani stimati, a causa del costo elevato della raccolta dei piani effettivi per tutte le query in esecuzione su un server. Ciò significa che se esegui il drill-down di un piano raccolto nel client, non avrà informazioni aggiuntive come l'analisi dell'indice e i dati del profilo di query in tempo reale. Puoi sempre eseguire di nuovo la query, in modo interattivo, per ottenere i dati di runtime aggiuntivi.
D:Qual è il sovraccarico di prestazioni di queste nuove funzionalità?R: La maggior parte delle informazioni che raccogliamo non è più costosa che se esegui le stesse query e raccogli gli stessi dati di runtime da Management Studio (ad es. con SHOWPLAN, STATISTICS TIME e STATISTICS IO attivi). Gran parte di ciò è compensato, tuttavia, dal nostro comportamento predefinito di eliminazione dei risultati, quindi non appesantiamo il server con lo sforzo di trasmettere i risultati alla nostra applicazione.
Per piani estremamente complessi eseguiti su database con schemi molto complessi e MOLTI indici, la raccolta di indici e statistiche potrebbe essere meno efficiente, ma è estremamente improbabile che ciò causi un impatto evidente sui carichi di lavoro esistenti. Questo non sarà influenzato dal numero di righe in una tabella, menzionata in una variante di questa domanda.
Per le query di lunga durata o ad alta intensità di risorse, la mia più grande preoccupazione sarebbe la nostra raccolta di profili di query in tempo reale. Abbiamo due preferenze che possono aiutare in questo:se includere il profilo Live Query con tutta la generazione effettiva del piano per impostazione predefinita e quale intervallo per raccogliere i dati dal DMV. Anche se sento ancora che il sovraccarico di questa raccolta non dovrebbe mai avvicinarsi al sovraccarico della query stessa, puoi modificare queste impostazioni per rendere la raccolta meno aggressiva.
Detto questo, con il disclaimer che tutto dovrebbe essere fatto con moderazione, non ho riscontrato alcun problema relativo al sovraccarico della raccolta dei dati e non esiterei a utilizzare tutte le funzionalità contro un'istanza di produzione.
D:C'è qualcosa per aiutare a creare indici filtrati?R: Al momento non disponiamo di alcuna funzionalità che raccomandi indici filtrati, ma è sicuramente nel nostro radar.
D:Hai in programma di aggiungere una funzionalità di confronto dei piani di query a Plan Explorer?R: Sì, questo è stato sicuramente nella nostra tabella di marcia da molto prima che questa funzionalità fosse introdotta in SSMS. :-) Ci prenderemo il nostro tempo e creeremo un set di funzionalità che, si spera, ti aspetti da noi.
D:Potresti usare i pacchetti SSIS per capire le prestazioni di un pacchetto?R: Suppongo che potresti, se invochi il pacchetto o il lavoro tramite T-SQL su un server (Plan Explorer non ha la capacità di avviare direttamente cose come i pacchetti SSIS). Ma l'applicazione mostrerà solo gli aspetti delle prestazioni resi visibili tramite SQL Server:se ci sono inefficienze all'interno del pacchetto SSIS che non sono correlate all'esecuzione su SQL Server (ad esempio, un ciclo infinito in un'attività di script), siamo non saremo in grado di raccoglierli, perché non abbiamo visibilità e non stiamo eseguendo alcuna analisi del codice.
D:Puoi mostrare rapidamente come utilizzare la funzione di analisi dei deadlock?R: Ho perso questa domanda durante il webinar, ma parlo di questa funzionalità nel mio Demo Kit, Jonathan Kehayias ne ha scritto sul blog qui, Steve Wright ha un video su YouTube a riguardo e la documentazione ufficiale può essere rivista nella Guida per l'utente di PE.
D:Può essere usato come Profiler? Posso analizzare un intero carico di lavoro?R: Plan Explorer è progettato per aiutare ad analizzare le singole query e i relativi piani di esecuzione. Disponiamo di una piattaforma di monitoraggio completa per attività con ambito più ampio e sono disponibili anche diversi strumenti di analisi del carico di lavoro di terze parti.
D:Sono molto nuovo nell'ottimizzazione delle query:potresti suggerire strumenti e articoli per una comprensione più approfondita?R: Sono disponibili molte risorse per migliorare l'ottimizzazione delle query:
- Qualsiasi libro T-SQL di Itzik Ben-Gan, Grant Fritchey o Benjamin Nevarez;
- Qualsiasi post sul blog di Paul White o Rob Farley;
- Domande e risposte qui su answer.sqlperformance.com o su dba.stackexchange.com;
- Ricerca video di ottimizzazione su YouTube;
- Il Demo Kit (con una nuova versione in arrivo!); e,
- Pratica . Sul serio. Puoi leggere tutti i libri e gli articoli che desideri, ma senza un lavoro pratico e pratico per la risoluzione dei problemi e il miglioramento delle query problematiche con problemi di prestazioni reali, sarà difficile diventare un esperto. IMHO.
Riepilogo
Grazie per aver partecipato al webinar e grazie mille per tutte le fantastiche domande. Mi dispiace di non essere stato in grado di affrontarli tutti, ma spero che questo sia stato comunque utile. Se hai una domanda che non ho affrontato sopra, non esitare a chiedermi direttamente a [email protected].