5. GIANLUCA SARTORI
• Consulente Freelance
• 10 anni di esperienza SQL Server, dalla v. 7
• Specializzato in performance tuning
• MCTS, MCITP, MCT
• DBA @ Scuderia Ferrari
6. AGENDA
• Baselining
• Cosa succede in condizioni “normali”?
• Workload Analysis
• Come interagiscono le applicazioni e il database?
• Benchmarking
• Cosa succederebbe se…?
7. Health Check
Controllo la «salute» del mio server
• Perché?
• Migliorare le prestazioni
• Migliorare la gestione
• Quando?
• Regolarmente Assessment
• Continuamente Monitoring
• Come?
• Serve una metodologia
10. Cos’è una baseline?
Descrive le performance in condizioni “normali”
• Serve come termine di confronto
• Monitoring
• Troubleshooting
• Trend Analysis e Capacity Planning
11. Creare una baseline
• Quali dati raccogliere?
• Come raccoglierli?
• Con quale frequenza?
• Dove salvarli?
• Quanto serve mantenerli?
• Come analizzarli?
12. Quali dati raccogliere?
• Informazioni generali
• Sistema
• Versione
• Dotazione HW (CPU, RAM, disco)
• SQL Server
• Versione e edizione
• Parametri di configurazione
• Inventario dei database
• Dimensione e posizionamento dei file sullo storage
13. Quali dati raccogliere?
• Indicatori di performance
• Wait Stats
• Performance Counters
• Dynamic Management Objects
• Query Stats
14. Wait Stats
DMV sys.dm_os_wait_stats
• Traccia il tempo speso dai processi in attesa di risorse
• Tempi di attesa cumulativi (ultimo riavvio dell’istanza)
• Ottimo punto di partenza per il troubleshooting
• Consente di identificare i problemi dai sintomi
• Mostra quali aree richiedono attenzione
• Non tutte le classi di wait sono significative!
15. Wait Stats
COMUNI CLASSI DI WAIT
Risorsa Classe Esempio
Locking LCK_*
LCK_M_S
LCK_M_X
Latching
LATCH_*
PAGELATCH_*
LATCH_EX
PAGELATCH_UP
I/O
PAGEIOLATCH_*
*_COMPLETION
WRITELOG
PAGEIOLATCH_SH
IO_COMPLETION
ASYNC_IO_COMPLETION
CPU
THREADPOOL
SOS_SCHEDULER_YIELD
Network ASYNC_NETWORK_IO
Parallelismo CXPACKET
17. Performance Counters
• CPU
• Memoria
• Disco
• SQL – specific
• …
Quali contatori?
• In SQL Server 2012 ce ne sono più di 400!!!
18. DMO
• sys.dm_os_ OS information
• sys.dm_io_ Disk performance
• sys.dm_exec_ Sessions, requests, connections
• sys.dm_db_ Database info
• sys.dm_tran_ Transactions, locks
• sys.dm_... Audits, broker, CDC, FileStream,
FTS, HADR, Repl, RG, XE…
• Non tutte le DMV riguardano le performance
19. Quali DMO?
Periodic Table of SQL Server Dynamic Management
Objects
SELECT name
,type_desc
FROM sys.all_objects
WHERE name LIKE 'dm[_]%'
ORDER BY name
In SQL Server 2012
ce ne sono 141 !!
http://thesqlagentman.com/periodic-table/
20. Quali dati raccogliere?
Come orientarsi tra 400 performance counters e 141 DMO?
• Glenn Berry’s Diagnostic Information Queries
http://sqlserverperformance.wordpress.com/
• Davide Mauri’s SYS2 DMVs
http://sys2dmvs.codeplex.com/
• Brent Ozar’s sp_Blitz
http://www.brentozar.com/blitz/
• Kendall van Dyke’s SQLPowerDoc
https://sqlpowerdoc.codeplex.com/
21. Come consultare i dati?
• Real-time
• Consultazione dei dati in tempo reale
• Monitoring e Alerting
• Mancano i punti di riferimento!
• Continuous
• Raccolta di informazioni in un repository storico
• Monitoring
• Troubleshooting
• Baselining uso i dati raccolti per il monitoring
seleziono un sottoinsieme
22. Strumenti di monitoring continuo
• Strumenti built-in di Windows
• Reliability and Performance Monitor
• XPERF
• Perfmon automation
• logman.exe
• relog.exe
• PAL [open source]
• http://pal.codeplex.com/
• Offre Collector Set specifici per diversi prodotti MS
23. Strumenti di monitoring continuo
• Suite commerciali
• Soluzioni custom
• Pro e contro
• Strumenti Built-in di SQL Server
• Performance Data Collector
24. Performance Data Collector
• Presente in tutte le edizioni (no Express)
• Contiene 3 Collection Sets di sistema
• Modello estensibile con Collection Sets custom
• Raccoglie i dati a intervalli predefiniti
• I dati vengono salvati in un Management Datawarehouse
• Più istanze possono condividere lo stesso MDW
• Può essere integrato con Utility Control Point
• E’ corredato da report per analisi e consultazione dei dati
• Report centralizzati su Reporting Services:
http://blogs.msdn.com/b/billramo/archive/tags/mdw+reports/
25. Quanto serve mantenerli?
• Dipende da
• Capacità disponibile
• Profondità dell’analisi richiesta
• Volatilità dell’ambiente
26. Quali dati formano la baseline?
• Seleziono un sottoinsieme dei dati raccolti per il
monitoring
• Periodicamente seleziono la baseline
• Selezione “implicita” giorno o mese precedente
• Selezione “esplicita” estraggo uno snapshot
• Una sola baseline?
• Dipende dal business cycle
• Dipende dalle applicazioni
28. Monitoring Baseline
• Raffronto tra il valore istantaneo dell’indicatore
di performance e la sua baseline
• La baseline con cui confrontare va scelta in
relazione al business cycle
30. Workload Analysis
• Performance effetto
• Workload causa
• Analisi del workload permette di correlare cause
ed effetti
• L’analisi produce un piano di intervento
31. Query Statistics
• DMV sys.dm_exec_query_stats
• Informazioni su tutte le query presenti in plan cache
• Possibile ottenere le query più costose in termini di:
• IO
• Reads
• Writes
• CPU
• Execution count
32. Plan cache analysis
• Correlare le wait stats con le query stats
• Identificare query problematiche
• Indici mancanti
• Conversioni implicite
• Individuare problemi applicativi
• “Plan cache bloat”
• DTA 2012 può usare la plan cache come source
workload
34. Trace
• Query stats non sono sempre sufficienti
• Sono volatili
• Non catturano le query marcate con WITH RECOMPILE
• Quale trace raccogliere
• Eventi
• colonne
• Filtri
• Strumenti di raccolta
• Profiler vs. SQLTrace
35. Extended Events
• Introdotti in SQL Server 2008 (es: Audit)
• Espongono eventi che avvengono del Database Engine
• Moltissimi eventi sono intercettabili solo con XE
• Performanti
• Configurabili
• Sostituiranno SQL Trace (deprecata da SQL Server 2012)
• Mancano ancora alcune funzionalità
• Strumenti di analisi
• Strumenti di replay
36. Workload analysis
• Cosa analizzare
• Dipende dalla traccia catturata
• Correlare con i performance counter
• Strumenti di analisi
• RML Utilities (ReadTrace)
Non compatibile con SQL2012 www.spaghettidba.com conversione
• PSSDIAG
• SQL Nexus
• ClearTrace
38. Cos’è un benchmark?
Descrive le performance in diversi scenari
• Serve come per valutare scenari whatif:
• Upgrade hardware
• Virtualizzazione
• Serve per vagliare gli interventi di tuning
• Modifiche a configurazioni server-wide
• Aggiunta/rimozione di indici
• Interventi sul codice
40. Workload capture
• Quale strumento?
• SQL Trace vs. Profiler
• Utilizziamo una SQL Trace
• Quali eventi catturare?
• Quali colonne catturare?
• RML Utilities
• Trace definition script
• Backup database
• Prima effettuare il backup, poi avviare la traccia
• Prima avviare la traccia, poi effettuare il backup
• Filtrare la traccia
WORKLOAD
CAPTURE
41. Workload replay
Preparare l’ambiente di test
• L’ambiente deve essere un clone completo
• Restore User Databases
• Attenzione ai database_id!
• Logins
• Attenzione agli utenti orfani!
• Job
• Package SSIS / DTS
• Database Mail
• L’ambiente di test deve essere isolato dalla produzione!
REPLAY COLLECT
ANALYZEADJUST
42. Workload replay
Quale strumento?
• Profiler
• RML Utilities - Ostress
• Distributed Replay
• Novità di SQL Server 2012
• Può eseguire un workload da più client
• Stesso query rate della traccia originale
(synchronization mode)
REPLAY COLLECT
ANALYZEADJUST