Administrace Oracle Paralelní zpracování
Paralelní zpracování dat Zvyšuje výkon databáze Stupeň paralelizace – kolik procesů pracuje souběžně Oracle Parallels Execution
Systém „Shared nothing“ Vyžaduje statické rozdělení dat Každý proces pracuje na svých pevně stanovených datech Obvyklé v ne-Oracle databázích
Systém „Shared everything“ Dynamické rozdělování dat mezi procesy Náročnější na provoz, ale nezávislejší na datech
Procesy zapojené do paralelizace Query Coordinator rozděluje práci a sbírá dílčí výsledky Parallel Execution Server Processes provádí dílčí operace s daty čekají na coordinatora v parallel execution server process pool EXPLAIN PLAN FOR select * from ... SELECT * FROM TABLE(dbms_xplan.display());
Příklad SELECT jmeno, MAX(plat), AVG(plat) FROM zamestnanec zam, oddeleni odd WHERE zam.idodd = odd.idodd ORDER BY jmeno;
Granule minimální část zpracovávaná odděleně dělení na granule je závislé na: konkrétních datech operaci stanoveném stupni paralelizace bloky (logicky) x partitions (fyzicky) dělení nelze ovlivnit
Paralelizace stanovena automaticky (Auto DOP) pokud chci přistupovat k objektu paralelně: ALTER TABLE zamestnanec PARALLEL 4; pokud chci vynutit paralelizaci své session: ALTER SESSION FORCE PARALLEL QUERY ; „hint“ v SQL: SELECT /*+ PARALLEL(z 4) /* jmeno FROM zamestnanec z ...
Základní parametry SHOW PARAMETER nebo přes V$PARAMETER parallel_min_servers ... počet serverů při spuštění parallel_max_servers ... maximální počet serverů parallel_adaptive_multi_user ... dynamické dělení mezi uživatele parallel_degree_policy ... MANUAL/AUTO/LIMITED
Oracle Partitioning Umožňuje fyzické rozdělení databázových objektů Dělení na základě hodnot zadaného sloupce (pomocí intervalu, seznamů hodnot, hešování...)
Oracle Partitioning – příklad 1 create table prodej (rok number(4), ...) partition by range(rok) partition p1 values less than (1992) tablespace t1 partition p2 values less than (1993) tablespace t2 partition p3 values less than (2000) tablespace t3
Oracle Partitioning – příklad 2 create table prodej (rok number(4), ...) partition by hash(rok) partitions 4 store in (tab1, tab2, tab3, tab4)
Oracle Partitioning – příklad 3 create table prodej (rok number(4), ...) partition by list(rok) partition p1 values(‘1991’,’1992’) tablespace t1 partition p2 values(‘1993’) tablespace t2;
Partitioning - indexy Lokální index – index uložen u každého oddílu Globální index – index dělen samostatně Globální nedělený index