Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Architektury a technika databázových systémů

Podobné prezentace


Prezentace na téma: "Architektury a technika databázových systémů"— Transkript prezentace:

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


Stáhnout ppt "Architektury a technika databázových systémů"

Podobné prezentace


Reklamy Google