Monitoring SQL Server, Resource Governor, Tracing SQL Server
1. Monitoring
Monitoring – cíl Zrychlení odezvy. Hledání úzkého hrdla. Identifikace často prováděných dotazů. Úprava dotazu, změna indexu, …
Sledování aktivity uživatelů. Debugging.
Monitoring - nástroje Activity monitor. SSMS: [CTRL]+[ALT]+[A]
Performance monitor. [Win]+[R] perfmon [Enter]
Logs: SQL Server Logs. Windows Application Log (Event Viewer).
SQL Trace + SQL Profiler. Extended Events + Distributed Replay.
Activity Monitor
Performance Monitor
Performance Monitor objects SQL Server Performance objects: SQLServer:Access Methods, Backup Device, Buffer Manager, Buffer Node, CLR, Cursor Manager by Type, Cursor Manager Total, Database Mirroring, Databases, Deprecated Features, Exec Statistics, General Statistics, HADR Availability Replica, HADR Database Replica, Latches, Locks, Memory Manager, Plan Cache, Resource Pool Stats, SQL Errors, SQL Statistics, Transactions, User Settable, Wait Statistics, Workload Group Stats
Workload Groups in Perf. Mon.
SQL Server Logs
Windows Application Log
2. Resource Governor
Resource Governor Alokace CPU a paměti. Stanovení limitů. Omezení zdivočelých procesů. Dělení prostředků mezi aplikace. Implicitně vypnutý. ALTER RESOURCE GOVERNOR {RECONFIGURE | DISABLE}
Resource Governor - omezení Pouze CPU a paměť. Nereguluje přístup k disku!
Pouze prostředky alokované SQL serveru OS. Neovlivní ostatní aplikace na serveru.
Pouze relační databáze. Nemožno limitovat SSAS, SSIS, SSRS.
Nefunguje mezi instancemi. Nehodí se na krátké požadavky (OLTP). Nestihne včas zasáhnout.
Resource Governor – fungování Pojmy Resource Pool. Workload Group. Classifier function.
Proces. Každá session je klasifikována. Její úlohy jsou směrovány do skupiny. Skupina spotřebovává resource pool.
Resource Pool Část systémových prostředků přidělených serveru. Procesor: MIN, MAX, CAP (nedostupno v SSMS).
Paměť: MIN, MAX.
Internal Pool: Pro vnitřní potřeby serveru. Neomezen.
Default Pool: pro neklasifikované úlohy. Vlastní: CREATE RESOURCE POOL
Workload Group Do jednoho Resource Pool může být zařazeno více skupin (Workload Group). Slučování úloh do skupin podobné povahy pro společnou monitoraci a nastavení limitů. Výchozí skupiny: Internal, Default. Vlastní: CREATE WORKLOAD GROUP Volitelná Importance (v rámci Resource Pool). Limity per request: procesor, paměť, DOP (degree of parallelism).
Classifier Function Uživatelsky definovaná funkce. V databázi Master. Vrací jméno skupiny. Např. dle cílové databáze, uživatele, času, …
Registrace funkce pomocí: ALTER RESOURCE GOVERNOR
Volána při vytvoření session. Autentizace -> LOGON trigger -> klasifikace -> …
Při neúspěchu klasifikace: skupina default.
3. Tracing
Tracing – použití Debugging: Logování běhu serveru. Prohlížení spouštěných funkcí vč. parametrů. Následné krokování v SSMS.
Identifikace sekvence dotazů způsobující problém. Reprodukce problému (replay).
Identifikace pomalých dotazů.
Zátěžové testování: Záznam zátěže systému. Reprodukce na testovaném prostředí. Možno i z více počítačů – Distributed Replay.
Tracing - nástroje SQL Trace (deprecated) GUI: SQL Server Profiler. SQL: Stored procedures (server-side trace). Captrure i Replay.
Extended Events
Doporučená náhrada. GUI: SQL Server Management studio. SQL: CREATE EVENT SESSION Trace Replay pomocí Distributed Replay.
SQL Trace Zachycuje události předdefinovaných tříd. Obvykle filtrace pouze potřebných tříd. Ukládání pouze vybraných atributů. Definici trace možno uložit. Záznam výsledků do souboru či tabulky. Tabulka: větší zátěž ale snadná filtrace.
SQL Profiler
Rozsáhlé GUI k SQL Trace. Deprecated – budoucnost pouze pro SSAS. Definice. Spuštění. Client-side trace.
Analýza. Replay. Krok za krokem, breakpoints, run to cursor, …
Analýza deadlocks - deadlock wait-for graph. Deadlock graph event.
Sever-side trace Garance, že všechna data opravdu budou uložena. Výrazně nižší dodatečná zátěž (CPU, síť). http://sqlblog.com/blogs/linchi_shea/archive/2007/08/ 01/trace-profiler-test.aspx
Nutno definovat a spustit pomocí stored proc.
Strored procedures sp_trace_create Definice nové trace.
sp_trace_setevent trace_id, event_id, column_id, {0, 1} Přidání či odebrání sledované události, resp. atributu.
sp_trace_setfilter Nastavení filtrace.
sp_trace_setstatus Spuštění, zastavení či smazání.
http://msdn.microsoft.com/en-us/library/ms187346.aspx Lze generovat pomocí SQL Profiler: File -> Export -> Script Trace Definition.
Stored procedures – čtení sys.fn_trace_getinfo Informace o traces, odpovídá příkazu create.
sys.fn_trace_geteventinfo Které events jsou sledovány.
sys.fn_trace_getfilterinfo Jak jsou filtrovány.
sys.fn_trace_gettable Načte záznam trace ze souboru do fromy tabulky.
http://msdn.microsoft.com/enus/library/ff848738.aspx
Extended Events (XE) Nástupce SQL Trace. Dostupné od verze 2008.
Obdobná funkčnost. Ještě menší zátěž serveru [1]. Kompatibilní s ETW (Event Tracing for Windows) Zatím horší podpora nástrojů. Oficiální GUI funkční pouze pro verzi 2012.
Existují events, které jsou dostupné pouze z XE. Ve verzi 2008 existují naopak events dostupné pouze z SQL Trace. Ve verzi 2012 je již v XE dostupné vše.
Extended Events – použití Vytvoření Extended Event Session pomocí: SQL:
CREATE EVENT SESSION ADD EVENT ADD TARGET ALTER EVENT
SQL Server Management Studio: New Session. New Session Wizard. Pouze verze 2012.
Existují skripty pro usnadnění migrace [1]. [1] http://www.sqlskills.com/blogs/jonathan/post/Converting-SQL-Trace-to-Extended-Events-in-SQL-Server-2012.aspx