Creazione del monitoraggio della linea di base delle prestazioni di SQL Server


8

Al fine di ottenere una panoramica e dati comparabili, il mio compito attuale è quello di creare una linea di base delle prestazioni per ottenere alcuni dati sulle diverse istanze produttive di SQL Server.

I miei pensieri sono:

  • Voglio usare diversi DMV
  • Voglio includere una traccia del profiler (incl. Piani Exec.)
  • Voglio includere i dati perfmon

Quindi quello che cerco di ottenere è un monitoraggio generale delle prestazioni avviabile e bloccabile (anche programmabile) che restituisce:

  1. Tutte le informazioni necessarie per identificare il successo delle attività di ottimizzazione delle prestazioni in corso

  2. Coppia di figure aggregate e semplici che aiutano a visualizzare i progressi a lungo termine. Esp. per la gestione ;-)

  3. Piani di esecuzione rieseguibili all'interno della traccia del profiler per confrontare le modifiche e i miglioramenti delle singole code mediante attività di ottimizzazione dell'indice

Ho trovato un paio di informazioni che descrivono la creazione di baseline delle prestazioni. La maggior parte di essi è molto complicata o focalizzata solo su uno degli indicatori di prestazione desiderati (principalmente dati perfmon).

L'esempio / descrizione più corrispondente era il seguente: Creazione di una linea di base delle prestazioni per SQL Server

La domanda è:

Qualcuno ha esperienza nella creazione di questo tipo di monitor delle prestazioni in modo rapidamente fattibile?


3
Alcune informazioni che puoi ottenere da Brent Ozar Sp_Blitz alcuni link di riferimento qui e qui
Shanky,

3
Penso che la risposta breve sia: no. Devi prenderti del tempo per delineare ciò di cui hai bisogno per basare le prestazioni. Sulla base di tale valutazione, è necessario mettere insieme le query per raccogliere le informazioni e creare gli oggetti db per archiviare le informazioni. Oltre al suggerimento di @ Shanky puoi anche usare sp_whoisactive per raccogliere informazioni utili
tommyfly

6
Potresti anche prendere in considerazione uno strumento di terze parti che fa il baselining (e molto altro). Quello che stai proponendo è reinventare molto lavoro che altri hanno già fatto. No, non sono gratuiti, ma non è nemmeno il tuo tempo (e la direzione ne sarà ben consapevole).
Aaron Bertrand

Ciao Aaron, puoi per favore fornire uno strumento di terze parti che lo faccia
TheGameiswar

3
Vai a SQLSentry . L'ho usato nel mio lavoro precedente ed è uno strumento eccellente + ho un eccellente supporto e gente nella comunità come @AaronBertrand :-)
Kin Shah

Risposte:


8

Più di un anno dopo voglio far conoscere a tutti la mia esperienza e il risultato finale di questa domanda / argomento.

Ho iniziato a creare cose da solo. Inizialmente ho seguito l'articolo Raccogli e archivia i dati storici del contatore delle prestazioni di SQL Server con i CMV di Tim Ford per ottenere qualcosa e estenderlo con qualsiasi dato volessi raccogliere. Quindi una volta al giorno eseguo diverse procedure memorizzate su ciascun server SQL che raccolgono alcune informazioni specifiche dai DMV e memorizzano i risultati sul server locale all'interno di un database. Ciò include l'utilizzo dell'indice, gli indici mancanti, voci di registro specifiche come la crescita automatica, le impostazioni del server, le impostazioni del database dell'applicazione, la frammentazione, l'esecuzione del lavoro, le informazioni del registro delle transazioni, le informazioni sui file, le statistiche di attesa e altro ancora.

Inoltre ho aggiunto i risultati dell'esecuzione regolare di sp_blitz di Brent Ozar a questo repository per raccogliere ulteriori preziose indicazioni per lavorare, migliorare e riferire.

Tutti i dati vengono successivamente raccolti da lì in un server SQL di monitoraggio dedicato e in questo modo creo un archivio in bundle per informazioni rilevanti sulle prestazioni di tutti i miei server e lo utilizzo come base per le indagini e i report.

Quindi ho creato fogli Excel e anche rapporti usando servizi di reportistica per analizzare e interpretare. Alcuni esempi:

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Inoltre ho configurato il monitoraggio di alcuni contatori delle prestazioni usando TYPEPERF ispirato all'articolo " Raccolta dei dati sulle prestazioni in una tabella di SQL Server " di Fedor Georgiev.

Dalla mia istanza di monitoraggio SQL, innesco typeperf per eseguire e raccogliere un numero configurabile di campioni con un intervallo di campionamento configurabile e memorizzare i risultati nel mio db di monitoraggio centrale.

Questo mi permette di osservare i valori delle prestazioni a lungo termine, esempio:

inserisci qui la descrizione dell'immagine

Dopo un po 'di utilizzo di questo per raccogliere informazioni di base, è stato messo a punto il fatto che è necessario dedicare parecchi lavori di manutenzione alla ricerca di lavori non riusciti, alle procedure di rimozione dei buggin (ad esempio nel caso in cui un DB fosse portato offline, alcuni script non riusciti), mantenendo le impostazioni dopo la sostituzione di un server ...

Anche il database che raccoglie tutti i record richiede manutenzione e ottimizzazione delle prestazioni, quindi è necessario un lavoro aggiuntivo per mantenere utili i dati ...

Ciò che alla fine manca completamente è la capacità di guardare le cose che accadono dal vivo. Nel migliore dei casi, sarò in grado di dire cosa potrebbe accadere il giorno successivo dopo l'esecuzione dei raccoglitori di dati. Inoltre mancano tutti i dettagli. Non ho accesso ai grafici di deadlock, non riesco a guardare i piani di query di query che erano in esecuzione in un periodo di tempo sospetto ....

Tutto ciò mi ha fatto andare in carica il management per spendere soldi per una soluzione prefessional che non sono in grado di creare da solo.

La scelta finale è stata quella di acquistare SentryOne perché, rispetto ad altri, è convincente e fornisce molte informazioni necessarie per identificare i nostri punti deboli.

Come conclusione finale, consiglierei a tutti coloro che cercano risposte a domande simili di non provare a creare cose da sole finché non si dispone di un ambiente piccolo e sostanzialmente sano. Se hai un paio di sistemi e molti problemi, meglio cercare subito una soluzione professionale e utilizzare l'assistenza del fornitore sui tuoi problemi invece di spendere molto tempo e denaro per creare qualcosa di meno utile. Tuttavia, questo percorso era ancora molto interessante e mi ha fatto imparare molto che non voglio perdere.

Spero che ti sia utile una volta che ti sei imbattuto in questo thread di domande.

EDIT 20 aprile 2017: Brent Ozar ha recentemente pubblicato il seguente articolo su Facebook che è una specie di approccio simile adottato dal team SQL Tiger: https://blogs.msdn.microsoft.com/sql_server_team/sql-server-performance-baselining -reports-sfoga-per-enterprise di monitoraggio /


2
Sono contento che tu sia giunto alla stessa conclusione e hai perfettamente ragione, il tuo tempo è molto meglio speso per risolvere i tuoi problemi reali invece di reinventare la ruota. La tua ruota sembra particolarmente brillante però: D
ConstantineK

6

Ecco alcuni buoni articoli con alcuni esempi pratici che puoi trovare qui:

Come rilevare i problemi di prestazioni di SQL Server utilizzando le linee di base - Parte 1 - Introduzione

Come rilevare i problemi di prestazioni di SQL Server utilizzando le linee di base - Parte 2 - Raccolta di metriche e report

Come rilevare i problemi di prestazioni di SQL Server utilizzando le linee di base - Parte 3

Mentre la Parte 1 ti fornirà alcune conoscenze di base su ciò che è la linea di base, nella Parte 2 puoi trovare informazioni su come farlo da solo usando il metodo "povero" (è gratuito e buono per l'apprendimento)

La parte 3 fornisce alcuni esempi su come stabilire le linee di base e su come utilizzare le linee di base per la risoluzione di alcuni problemi tramite ApexSQL Monitor


4

Come un DBA abbastanza recentemente coniato sotto la pistola, ho eseguito la gamma di strumenti gratuiti e ho fatto un po 'di sperimentazione nello spazio a pagamento (DPA, SQL Sentry e Foglight) e dipende davvero da cosa desideri lo strumento.

Nella mia esperienza, la cosa più importante non era solo comunicare le linee di base delle prestazioni (la direzione non se ne curava di molto a meno che non ci fosse qualcuno a cui urlare), ma produrre qualcosa in un formato facile da consumare che chiarisse le priorità e fosse in grado di rintracciare le prestazioni problemi in produzione.

Puoi assolutamente sviluppare le tue abilità seguendo il percorso gratuito e gli strumenti per SQL Server sono fantastici.

Con questi e alcuni database / tabelle e lavori e tempi aggiuntivi puoi costruire un sistema di monitoraggio di base (ma non è carino) questi sono strumenti per i DBA; a meno che tu non sia bravo nelle cose BI, farai fatica a trovare il tempo per produrre utili cose utili per il business da esso, sebbene l'app Ozar sp_blitz sia piuttosto pericolosa.

Dopo aver trascorso circa un anno a fare le cose gratis e a risolvere un sacco di problemi (ma senza fare molti acquisti) sono stato in grado di chiarire, dopo un grosso problema, che il software di monitoraggio perf era una priorità e lo avremmo acquistato vieni all'inferno o all'acqua alta.

Dopo aver provato i client precedentemente menzionati, ho scelto DPA perché il management poteva facilmente consumare i risultati, anche se ho sicuramente le licenze client per SQL Sentry Plan Explorer Pro (vale il 1000% del denaro) e mi è piaciuto molto usare la versione del server, ma non li ho afferrati allo stesso modo.

Ho anche provato a far funzionare SQLNexus ad un certo punto, ma ho finito per lavorare molto di quello che mi interessava, potrebbe soddisfare le tue esigenze.


1

Per creare rapidamente una linea di base delle prestazioni per ottenere alcuni dati sulle diverse istanze sql produttive, vorrei utilizzare una versione di prova gratuita di uno strumento di terze parti come Solarwinds Database Performance Analyzer.



Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.