Fyzické uložení dat a indexy Michal Valenta Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze c Michal Valenta, 2016 BI-DBS, LS 2015/16 https://edux.fit.cvut.cz/courses/bi-dbs/ Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 1 / 18
Různé úrovně pohledu na data Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 2 / 18
Oracle fyzická a logická struktura databáze Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 3 / 18
Oracle fyzická struktura databáze Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 4 / 18
Dvou a vícevrstvá architektura Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 5 / 18
Oracle fyzická organizace relační tabulky Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 6 / 18
Adresa řádku (Oracle, ale podobně i jinde) Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 7 / 18
Index typu B*-Tree CREATE INDEX nazev_idx on Titul (nazev); CREATE UINIQUE INDEX titul_id_idx on Titul (titul_id); Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 8 / 18
Index typu B-Tree - charakteristika B - strom (řádu m) je m-ární strom, splňující následující omezení Kořen má nejméne 2 potomky, pokud není listem každý uzel kromě kořene a listu má nejméně [m/2] a nejvýše m potomků každý uzel ma nejméně m/2 1 a nejvíce m 1 datových záznamů (většinou jen klíčů) všechny cesty ve stromě jsou stejně dlouhé data v nelistovém ulzu jsou organizována p 0 (k 1, p 1 ), (k 2, p 2 ),..., (k n, p n ), u kde p0, p 1,..., p n jsou ukazatele na potomky k0, k 1,..., k n jsou klíče u je nevyužitý prostor záznamy(k i, p i ) jsou uspořádany vzestupně podle klíčů m/2 1 <= n <= m 1 odpovídá-li ukazateli p i, kde i < 1, n > podstrom U(p i ) platí: (i) pro každé k U(p i 1 ) je k <= k i (ii) pro každé k U(pi ) je k > k i listy obsahují úplnou množinu klíčů a mohou se lišit strukturou. Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 9 / 18
Bitmapové indexy Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 10 / 18
Použití bitmapového indexu při vyhodnocení dotazu Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 11 / 18
Použití bitmapového indexu při vyhodnocení dotazu Výběrová podmínka s operátorem IN Výberová podmínka s operátorem AND/OR Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 12 / 18
Porovnání indexů B-strom a Bitmap Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 13 / 18
Indexově organizovaná tabulka (Index-organized table) Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 14 / 18
Shluk (Cluster) Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 15 / 18
Přístup k SQL z aplikace fáze zpracování dotazu parse bind execute fetch + struktura pro návrat chybového kódu standardizované API a drivery (ODBC, JDBC,...) specifické knihovny (PHP,...) většinou API kopíruje fáze zpracování SQL dotazu... a přístupy, které odstiňují používání databáze: hibernate, tapestry,... Ruby on Rails, JAXB,... Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 16 / 18
Další techniky zrychlení přístupu k datům Připomenutí pojmů: OLTP versus DSS systémy optimalizace dotazu, prováděcí plán, cena dotazu fáze zpracování dotazu (příkazu) Používané techniky: zavedení redundance, materializované pohledy využítí vyrovnávacích pamětí pro data, ale také pro parsované SQL příkazy a kurzory Optimalizace aplikace a databáze: návrh struktury (normalizace vs. denormalizace) speciální struktury pro uložení dat optimalizace dotazů (zjištění dotazů, které je třeba optimalizovat) systémové zdroje (pamět - velikost a struktura) konfigurace serveru (disky, parametry databáze, zálohování) Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 17 / 18
K zapamatování (relační) databáze bez indexů nefungují rozumně indexy jsou nutné (pro větší data) DB stroj často některé indexy vytváři automaticky kvůli kontrole IO (PK, UK) v OLTP se nejčastěji používají indexy na bázi B-stromů (tam, kde jsou data (skoro) unikátní) kde jsou data velmi neunikátní (např. pohlaví) a potřebuji indexovat, tam se používají bitmapové indexy indexy je třeba udržovat (zjednodušeně ušetřím na dotazech, platím více při DML) klíč indexu (indexované atributy) může být složený / jednoduchý index může být unikátní / neunikátní. Kromě tzv heap table máme k dispozici další fyzické struktury v Oracle IOT a cluster Michal Valenta (FIT ČVUT) Fyzické uložení dat a indexy Databázové systémy 2016 18 / 18