Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Architektury a technika databázových systémů
Jiří Zechmeister 7. přednáška
2
Obsah Transakce Oracle wait interface Trasakční zpracování UNDO
COMMIT/ROLLBACK Oracle wait interface Co je to Oracle wait interface Co je to wait event Top 10 wait events
3
Opakování
4
Opakování - Jak probíhá dotaz
Uživatel zadá dotaz Server začne zpracovávat dotaz Shared pool provede soft-parse, jinak hard-parse Vloží do shared poolu Vložení nového příkazu do shared poolu vyžaduje latch Server proces hledá v buffer cache požadovaný data blok Data block přesune do sekce naposledy použitých Nebyl nalezen, server proces načte data ze souboru na disku (I/O a latch)
5
TRANSAKČNÍ ZPRACOVÁNÍ
6
Jak probíhá update Uživatel spustí příkaz UPDATE
Hard-parse x soft-parse Změněné řádky se změní v shared memory a také v undo tablespace Změna se projeví v redo logs souborech Proces DBWR zapíše změněné data z buffer cache do file systému Při commit se logwriter pokusí zkopírovat obsah redo log bufferu do redo log souborů Každé 3 vteřiny nebo v případě, že nastane „switch“ redo logů nastane checkpoint
7
Oracle wait interface
8
Základní myšlenka Protože potřebujete vědět kde vaše aplikace tráví čas ;) Záznam u každé obslužné rutiny Před jejím spuštěním vyvolá událost Provede se vlastní kód Událost se ukončí
9
Co je Oracle wait interface (OWI)
Nástroj pro sledování časové náročnosti činností v rámci životního cyklu session Umožňuje identifikovat úzká místa (bottleneck) Slouží pro sledování wait events
10
Proč OWI Dokáže rychle identifikovat úzká místa
Response Time = Service Time + Wait Time Při ladění DB dává smysl používat response time Přesně ukazuje na úzká místa
11
OWI Od verze Oracle 7.0.12 Sada pohledů V$SYSTEM_EVENT V$SESSION_EVENT
V$SESSION_WAIT V$EVENT_NAME V$SESSION
12
Instrumentace Myšlenka Oracle Nástroje pro trace
Každá činnost musí být zaznamenána Každá činnost musí být dohledatelná Každá činnost musí mít úrovně detailu Nástroje pro trace Event 10046 Sql extended trace Ukázka
13
Použití Trace Důležité jak na DB úrovni tak na aplikační vrstvě „Obalit“ kód pracující s DB (podepsání session, …) Např. package ILO (Instrumentation Library for Oracle ) Bez možnosti sledovat skutečný běh nelze systém provozovat, nebo jenom velice obtížně …
14
Ukázka trace file PARSING IN CURSOR #1 len=923 dep=0 uid=82 oct=3 lid=82 tim= hv= ad='db203a8' select y.oppar_db_job_name,y.oppar_db_job_rec,y.oppar_db_prefix,y.oppar_db_request_flag, y.oppar_db_run_id,TO_CHAR(y.oppar_db_last_date,'yyyymmdd') ,oppar_run_modefrom ……………………………. END OF STMT EXEC#1:c= ,e= ,p=29022,cr=31542,cu=0,mis=0,r=0,dep=0,og=4,tim= FETCH #1:c=0,e=9,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim= WAIT #1: nam='SQL*Net message to client' ela= 5 p1= p2=1 p3=0 WAIT #1: nam='SQL*Net message from client' ela= p1= p2=1 p3=0 BINDS #1: bind 0: dty=1 mxl=32(03) mal=00 scl=00 pre=00 oacflg=00 oacfl2=1 size=32 offset=0 bfp=110319ed0 bln=32 avl=00 flg=05 WAIT #1: nam='db file sequential read' ela= 27 p1=45 p2= p3=1 WAIT #1: nam='db file sequential read' ela= 10 p1=45 p2= p3=1 WAIT #1: nam='db file scattered read' ela= 74 p1=45 p2= p3=2 WAIT #1: nam='db file sequential read' ela= 9 p1=45 p2= p3=1
15
Pojmy Latch Latch contention
Oracle low-level mechanismus pro serializaci přístupu do paměťových struktur buffer cache, … Jednoduchá paměťová struktura Latch contention Chci latch, ale někdo jiný ji právě používá Počkám až bude k dispozici
16
Pojmy II KGX = Kernel Generic muteX KGX mutexes are not OS mutexes!!
Od verze 10.2 Fyzicky stejná struktura jako latch Pouze odlehčená a menší KGX mutexes are not OS mutexes!!
17
Wait events
18
Co je to wait event Oracle termín … Procesy čekají na
Uvolnění zdrojů Dokončení jiné akce Samotnou práci OWI umožňuje měření právě těchto wait events
19
SELECT * FROM v$event_name;
Přehled wait events 41 skupin wait events v wait events v 209 enqueue events 29 latch events 41 I/O events 13 tříd wait events v wait events v celkem 1116 290 enqueue events 43 latch events 75 I/O events SELECT * FROM v$event_name;
20
Top 10 wait events
21
Motivace Jde o čistě subjektivní výběr nejdůležitějších wait events
Měli byste vědět Co je způsobuje Jaké hodnoty jsou přiměřené Co můžete dělat, abyste je opravili
22
Procesorový čas CPU Není čistě wait event
Může být dobrým ukazatelem v mnoha případech chybný execution plan
23
DB File Sequential Read
Single block read Obvykle index nebo data block pomocí rowid Rozumná hodnota: < 10ms
24
DB File Sequential Read II
Dělat toho méně ;) Ladění SQL Redukce LIO Zvětšit buffer cache Pracovat rychleji Urychlit I/O
25
DB File Scattered Read Multi block read
Obvykle full table scan nebo fast full scan indexu Rozumná hodnota: < 10ms
26
DB File Scattered Read II
Dělat toho méně ;) Lepší indexy Dobré systémové statistiky Větší buffer cache Ladění SQL Pracovat rychleji Urychlit I/O
27
Direct Path Read/Write
Obvykle třídění v temp Přístup vždy do PGA Může být také paralelní dotaz Rozumná hodnota: < 20ms
28
Porovnání
29
Log File Sync Uživatelský proces čeká na LGWR
Vyprázdnění redo po uživatelském commit Pozor na příliš mnoho commitů Rozumná hodnota : <4ms
30
Log File Parallel Write
Čekání na zápis LGWR do log files Systémová I/O operace Rozumná hodnota : <4ms
31
Log file switch … Nastane, když databáze přepíná log files
Zamrznutí celé databáze Rozumná hodnota: 0ms Typy log file switch(archiving needed) log file switch (checkpoint incomplete) log file switch (private strand flush incomplete) log file switch completion
32
Read by other session Soupeření o stejný blok
Více session chce číst stejný blok Více session čeká na dokončení změny bloku
33
Read by other session II
Komplikované předcházení Obecně Eliminujte soupeření Najděte a eliminujte horké objekty Jedna z cest odhalení úzkého místa je ASH (active session history)
34
Read by other session III
LGWR – proces starající se o zápis do logů DBWR – proces starající se o zápis dat User1,2,3 – uživatelské procesy
35
Read by other session IV
Při modifikaci bloku musí být zamčena hlavička bloku Zámek je na velice krátkou dobu, ale v případě více procesů může jít o úzké místo
36
Enqueue locks Rozdíl oproti latch Latch poskytuje exkluzivní přístup
Enqueues umožňují sdílený přístup V případě latch musí session usnout nebo zkoušet přístup znovu a nemá záruku, že latch získá při dalším pokusu
37
Monitoring enqueue locks
V$LOCK Seznam aktuálních enqueues Obsahuje typ enqueue V$SESSION_WAIT Lze jednoduše zjistit čekající sessions V$SESSION Od verze 10g Wait informace z V$SESSION_WAIT BLOCKING_INSTANCE a BLOCKING_SESSION
38
TX wait events - enqueue
Transakční zámek (Transaction enqueue) Contention na konkrétní řádek tabulky Cílem je zabránit zápisu dvou session do stejného řádku tabulky Uvolněn vždy při commit transakce
39
TM wait events - enqueue
„DDL“ zámky (Table Modification Enqueue) Cílem je zabránit změnit definice tabulky dvěma session Typicky nastává při ověřování FK
40
SQL*Net message from client
Databáze je v klidovém stavu Čeká na další požadavek od klienta Často označována jako „Idle event“ Ukazuje na přenesení vykonávání na aplikační vrstvu
41
SQL*Net message to client
Přenos na stranu aplikační logiky
42
SQL*Net more data from client
Pro poslání SQL je potřeba více jak jeden packet Neposílejte SQL větší než 50kB ;)
43
SQL*Net more data from client
Stejné jako SQL*Net message to client, ale pro data Hodnoty bind proměnných Bulk operace Reprezentuje čas potřebný pro zabalení dat do packetů
44
Q&A
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.