SQL Trace, Profiling, …a Tuning Lubomír Andrle
OWI Za vším hledej waity Komplexní instrumentace Oracle kernelu Velmi jemná granularita Event vs. Wait class V$SESSION
Co je to výkon? Otázka: Databáze běží na 100% CPU. Je to známka dobrého nebo špatného výkonu? Záleží… „Výkon“ – Throughput – Response time
Co databázi vytěžuje V podstatě… : – Sessiony (bez nich nikdo nic neudělá) – Aplikace, kterým ty sessiony patří – Spouštění kurzorů (samotné SQL) Vytěžují CPU – anebo by chtěly Nevytěžují CPU – jsou IDLE nebo jsou něčím blokovány
Metriky databáze Ratios – Buffer cache hit ratio Počet transakcí za minutu Využití CPU ….. Neříkají nám nic o tom, jestli uživatel čeká nebo ne
Co má smysl měřit? ČAS – pro konkrétní úlohu – (konkrétního uživatele) – tak jemně, jak je potřeba
Response time Odezva pro uživatele – čas, za který je úloha splněna Součet časů všech podúloh – Parse – Načtení dat z tabulek – Přenos na aplikační vrstvu – …
Jak měřit response time? Instrumentace kódu Na úrovni Oracle – využít OWI
SQL Trace Vždy v rámci jedné session Generuje tracefile Event Alter session set events '10046 trace name context forever, level 12‘ DBMS_SYSTEM DBMS_MONITOR – Preferovaná metoda od 10g
SQL Trace II DBMS_MONITOR – Session_trace_enable – Database_trace_enable …
SQL Trace III PARSE, EXEC, FETCH c = CPU time e = Elapsed time r = rows returned p = physical reads cr = consistent reads
SQL Trace IV WAIT nam = název eventu ela = elapsed time (mikrosekundy) BINDS dty = datový typ val = value XCTEND – Commit / rollback
SQL Trace V Třívrstvá architektura Connection pooling DBMS_SESSION.set_identifier Client_id_trace_enable
Profiling TKPROF – parsuje tracefile a provede agregace tkprof
Profiling II Alternativy k TKPROF: – OraSRP – TVDXTAT – MOS tooly
Profiling III Třívrstvá architektura: – Jeden „request“ je často rozprostřen mezi několik sessions – Sessiony jsou podepsané pomocí request ID Utilita TRCSESS – Spojuje tracefily na základě parametrů – Například client_identifier nebo action
Profiling IV Nepoužívejte trace na celou databázi Profilujte relevantní části Pozor na místo na disku
Historické metriky ASH (Active session history) – V$ACTIVE_SESSION_HISTORY AWR (Automatic workload repository) – DBA_HIST_% Vyžaduje Enterprise Edition + tuning packy
AWR Vytváří snapshoty – Agregovaná data z ASH pro dané období – Data jsou pak zveřejněna pomocí DBA_HIST pohledů – Je nad nimi možné dělat vlastní výpočty a přehledy DBMS_WORKLOAD_REPOSITORY
AWR II AWR Report Agregované informace z AWR v textu nebo HTML $ORACLE_HOME/rdbms/admin/awrrpt.sql
AWR III ADDM – Automatic database diagnostic monitor – Vyhodnocuje data z AWR a vydává doporučení ADDM Report $ORACLE_HOME/rdbms/admin/addmrpt.sql
Shrnutí Response time Tracing Profiling Automaticky sbírané výkonnostní metriky databáze – ASH, AWR, ADDM – reporty
Q & A