6. Fyzická (interní) úroveň databázového systému

Podobné dokumenty
6. Fyzická (interní) úroveň databázového systému

8. Zpracování dotazu. J. Zendulka: Databázové systémy 8 Zpracování dotazu 1

J. Zendulka: Databázové systémy 8 Zpracování dotazu Podstata optimalizace zpracování dotazu

Kapitola 11: Indexování a hešování. Základní představa

B Organizace databáze na fyzické úrovni u serveru Oracle

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Vyhodnocování dotazů slajdy k přednášce NDBI001. Jaroslav Pokorný MFF UK, Praha

04 - Databázové systémy

1. Databázové systémy (MP leden 2010)

Databáze I. 5. přednáška. Helena Palovská

TÉMATICKÝ OKRUH Počítače, sítě a operační systémy

10. Architektura klient/server a třívrstvá architektura

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

10. Architektura klient/server a třívrstvá architektura

Databázové systémy. Cvičení 6: SQL

J. Zendulka: Databázové systémy 4 Relační model dat 1

Organizace a zpracování dat I

4. Relační model dat. J. Zendulka: Databázové systémy 4 Relační model dat 1

Definice. B-stromu. B-strom řádu m je strom, kde každý uzel má maximálně m následníků a ve kterém platí:

Datové struktury 2: Rozptylovací tabulky

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Databázové systémy Tomáš Skopal

Fyzické uložení dat a indexy

Operátory ROLLUP a CUBE

8.2 Používání a tvorba databází

Systém souborů (file system, FS)

PA152. Implementace databázových systémů

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Stromové struktury v relační databázi

5. Formalizace návrhu databáze

Stromové struktury v relační databázi

9. Transakční zpracování

1 Úvod. J. Zendulka: Databázové systémy - 1 Úvod 1

Stromy, haldy, prioritní fronty

Dynamické datové struktury IV.

Databázové systémy Cvičení 5.2

J. Zendulka: Databázové systémy - 1 Úvod Intuitivní vymezení pojmu databáze

4. Databázové systémy

autoři: Rudolf Bayer, Ed McCreight všechny vnější uzly (listy) mají stejnou hloubku ADS (abstraktní datové struktury)

RELAČNÍ DATABÁZOVÉ SYSTÉMY

SQL tříhodnotová logika

Paměťový podsystém počítače

Technické informace. PA152,Implementace databázových systémů 4 / 25. Projekty. pary/pa152/ Pavel Rychlý

5. Formalizace návrhu databáze

Zápisování dat do databáze

Úvod do databázových systémů

Téma 10 Přístup k datům

NPRG030 Programování I, 2018/19 1 / :03:07

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

KIV/ZIS cvičení 6. Tomáš Potužák

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Databáze I. Přednáška 4

Časová a prostorová složitost algoritmů

2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Informační systémy ve zdravotnictví. 6. cvičení

Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce)

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Materializované pohledy

Téma 11 Přístup k datům Obsah. Organizace ukládání dat

Databáze II. 1. přednáška. Helena Palovská

Optimalizace SQL dotazů

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Kapitola 6: Omezení integrity. Omezení domény

Principy operačních systémů. Lekce 7: Souborový systém

Databázové systémy trocha teorie

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

Systém adresace paměti

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Struktura programu v době běhu

IAJCE Přednáška č. 9. int[] pole = new int[pocet] int max = pole[0]; int id; for(int i =1; i< pole.length; i++) { // nikoli 0 if (Pole[i] > max) {

vyhledávací stromové struktury

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Dynamické datové struktury III.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Analýza dat a modelování. Přednáška 3

Algoritmizace prostorových úloh

Maturitní témata Školní rok: 2015/2016

Optimalizace dotazů a databázové transakce v Oracle

37. Indexování a optimalizace dotazů v relačních databázích, datové struktury, jejich výhody a nevýhody

Databáze SQL SELECT. David Hoksza

01. Kdy se začala formovat koncept relačních databází (Vznik relačního modelu, první definice SQL)? a) 1950 b) 1960 c) 1970 d) 1980

SQL - trigger, Databázové modelování

Optimalizace plnění a aktualizace velkých tabulek. Milan Rafaj, IBM

Ukládání a vyhledávání XML dat

O Apache Derby detailněji. Hynek Mlnařík

Lekce 6 - Správa prostorových dat

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

OZD. 2. ledna Logický (Objekty, atributy,...) objekty stejného typu.

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Vyvažování a rotace v BVS, všude se předpokládá AVL strom

Semestrální práce 2 znakový strom

Binární vyhledávací stromy pokročilé partie

Prioritní fronta, halda

Databázové systémy Cvičení 5.3

DATABÁZOVÉ SYSTÉMY. Metodický list č. 1

Přednáška. Systémy souborů. FAT, NTFS, UFS, ZFS. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Základní datové struktury III: Stromy, haldy

Transkript:

6. Fyzická (interní) úroveň databázového systému 6.1. Struktura databázového systému... 2 6.2. Přístup k datům v databázi... 3 6.3. Struktura souborů... 4 6.4. Správa vyrovnávací paměti... 8 6.5. Podstata indexování a hašování... 10 6.6. Uspořádané indexy... 12 6.7. B+ strom... 17 6.8. Hašování... 25 6.9. Shlukování (clustering)... 29 6.10. Bitmapové indexy... 30 6.11. Fyzický návrh databáze... 33 Literatura... 37 J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 1

6.1. Struktura databázového systému uživatel překladač optimalizátor žurnál (log) uživatelská transakce správce oprávnění a integrity správce vyrovnávací paměti správce zotavení správce souběžného přístupu vyrovnávací paměť tabulka zámků správce souborů statistická data indexy uživatelská data systémová data J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 2

6.2. Přístup k datům v databázi r_číslo jméno... 561021/3117 Novák SELECT * FROM Zákazník WHERE r_číslo = 561021/3117 Uložený záznam r Blok b Blok b SŘBD. Správce vyrovnávací paměti Správce diskového prostoru Správce souborů OS Správce disku Načti uložený záznam r (RID) uloženého souboru Zákazník (FID) Načti blok b souboru X Načti blok b množiny bloků FX Databáze - hierarchie pamětí: vnitřní, sekundární (disk), terciální (mag.páska) Cíl: minimalizace přístupů k disku. J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 3

6.3. Struktura souborů Soubor posloupnost záznamů seskupovaných do bloků tvořících logický celek. Organizace záznamů v souborech Neuspořádaný soubor (heap organization) záznam je umístěn tam, kde je místo, neexistuje žádné uspořádání záznamů. Sekvenční soubor záznamy jsou uspořádány podle hodnoty tzv. vyhledávacího klíče (search key). V případě takového uspořádání, kdy jsou logicky svázané záznamy umístěny fyzicky blízko u sebe, hovoříme o shlukování (clustering). Klíč pro shlukování se pak označuje jako shlukovací klíč (cluster key). Hašovaný soubor záznamy jsou umísťovány do bloků na základě hodnoty hašovací funkce. Soubory se záznamy pevné délky Musí být zajištěno, aby identifikace záznamu (RID, ROWID) byla konstantní po celou dobu jeho života. J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 4

Z 1 Z 2 Z 3 Z 4 Z 5 Z 6 Z 1 Z 3 Z 4 Z 5 Použití přetokových oblastí (bloků) u sekvenčních souborů Soubory se záznamy proměnné délky Potřeba vzniká v těchto případech: uložení záznamů různých typů v jednom souboru, typ záznamu, dovolující proměnnou délku některé položky, typ záznamu umožňující opakující se položky (seznam) není v klasické relační databázi. J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 5

Možnosti realizace: řetězec bytů proměnné délky, několik záznamů pevné délky S rezervovaným prostorem Použitím ukazatelů P1 P2 P1 P2 U11 U12 U13 U21 U22 U11 U12 U13 U21 U22 P1 P2 U11 U21 U12 U13 U22 P1 P2 U12 U13 U22 U11 U21 Organizace bloků (stránek) S1 S2 V S1 S2 S1 V S1 S2 V S1 V S2 V V J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 6

Vztah databáze a souboru operačního systému: Každá tabulka (příp. indexy) v samostatném souboru OS. Typické pro databáze systémů s architekturou PC file-server (např. dbase). Celá databáze (typicky obsahujících řadu schémat) v jednom nebo několika souborech OS. Typické pro databáze systémů s architekturou klient-server (např. Oracle, SQLBase). J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 7

6.4. Správa vyrovnávací paměti Požadavky co nejlepší strategie výměny bloků, omezení času, kdy lze blok zapsat na disk, možnost vynuceného zápisu modifikovaných bloků na disk, často používané bloky (katalogu, indexů). Možnosti řešení vyrovnávací paměť spravovaná operačním systémem (OS), vyrovnávací paměť spravovaná SŘBD. Problémy vyrovnávací paměti ve správě OS J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 8

strategie výměny bloků LRU, SŘBD může lépe "předvídat potřebu", Př) Zákazník JOIN Účet metodou zanořených cyklů for each blok tabulky Zákazník do for each blok tabulky Účet do... - hodila by se spíše strategie MRU nelze omezit čas, kdy lze zapsat blok na disk vyrovnávací paměť spravovaná SŘBD J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 9

6.5. Podstata indexování a hašování hodnota vyhledávacího klíče index, resp. hašovací funkce... primární soubor Primární soubor soubor se záznamy tabulky. Vyhledávací klíč sloupec (případně složený) tabulky, prostřednictvím jehož hodnoty budeme přistupovat k požadovaným záznamům. Primární vyhledávací klíč vyhledávací klíč, podle jehož hodnot je setříděn primární soubor. Sekundární vyhledávací klíč vyhledávací klíč, který není primární. Uspořádaný index založený na seřazení podle hodnot vyhledávacího klíče. Hašovaný index založený na rovnoměrném rozložení hodnot vyhledávacího klíče v sektorech (bucket) záznamů primárního J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 10

souboru (typicky blok na disku). Sektor pro záznam s danou hodnotou vyhledávacího klíče je určen hašovací funkcí. J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 11

6.6. Uspořádané indexy Účet 100 200 300 10 10000 560825/1432 Jánská 100......... 131......... 200......... 300......... J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 12

Primární index (také shlukující) index pro prim. vyhledávací klíč. Sekundární index index pro sekundární vyhledávací klíč. Indexsekvenční soubor - uspořádaný primární soubor + primární index. Položka indexu záznam obsahující hodnotu vyhledávacího klíče a ukazatele na jeden nebo několik záznamů primárního souboru s touto hodnotou primárního klíče, případně ukazatel na sektor ukazatelů. Hustý index index s položkami obsahujícími všechny hodnoty vyhledávacího klíče vyskytující se v primárním souboru. Řídký index index s položkami obsahujícími jen některé hodnoty vyhledávacího klíče vyskytující se v primárním souboru. Primární řídký index typicky obsahuje jednu položku pro každý blok primárního souboru. Víceúrovňový index index, u kterého je každá úroveň, s výjimkou poslední, řídkým primárním indexem úrovně následující. Poslední úroveň je jednoúrovňovým indexem primárního souboru. Index s unikátními hodnotami (unique index) index pro vyhledávací klíč, jehož hodnoty jsou v primárním souboru unikátní. J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 13

Operace nad indexem Vložení hodnoty (pro nový záznam v primárním souboru) Hustý index Najdi v indexu položku s vkládanou hodnotou vyhledávacího klíče; IF položka existuje THEN ELSE Vlož ukazatel na příslušný záznam primárního souboru do položky indexu Vytvoř novou položku s vkládanou hodnotou vyhledávacího klíče a ukazatelem na příslušný záznam primárního souboru; J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 14

Řídký index (předpoklad položka indexu ukazuje na blok) IF je vytvořen nový blok primárního souboru THEN ELSE Vytvoř novou položku indexu s vkládanou hodnotou vyhledávacího klíče a ukazatelem na příslušný blok IF nově vložený záznam má nejmenší hodnotu vyhledávacího klíče v bloku THEN Aktualizuj hodnotu vyhledávacího klíče v položce indexu ukazující na daný blok; Zrušení hodnoty Hustý index Najdi v indexu položku s rušenou hodnotou vyhledávacího klíče; IF položka obsahuje pouze ukazatel na rušený záznam THEN ELSE Zruš položku indexu Zruš ukazatel položky na rušený záznam; J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 15

Řídký index Najdi v indexu položku s rušenou hodnotou vyhledávacího klíče; IF položka existuje THEN IF položka indexu ukazuje na rušený záznam THEN IF rušený záznam není jediným záznamem v daném bloku primárního souboru THEN ELSE Aktualizuj položku indexu pro následující záznam bloku primárního souboru Zruš položku indexu; Nevýhody indexsekvenčních souborů - hlavní nevýhodou je pokles výkonnosti s rostoucí velikostí souboru (více záznamů, více záznamů indexu i primárního souboru v přetokových blocích) J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 16

6.7. B+ strom Nejpoužívanější indexová struktura v databázových systémech Struktura B+ stromu - víceúrovňový index ve tvaru vyváženého n-nárního stromu - uzel stromu má typicky velikost jednoho diskového bloku - každý uzel s výjimkou kořene a listu má n/2 až n následníků, - kořen, není-li současně listem, má nejméně 2 následníky - list obsahuje (n-1)/2 až n-1 hodnot vyhledávacího klíče - listové uzly tvoří jednosměrný uspořádaný seznam - pro K hodnot vyhledávacího klíče není cesta od kořene k listu delší než log n/2 (K) Pozn.: Výraz x značí nejmenší celé číslo větší nebo rovno x a x značí největší celé číslo menší nebo rovno x. J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 17

Typický tvar uzlu: P 1 K 1 P 2 K 2... P n-1 K n-1 P n Př) Struktura B+ stromu pro n=3 indexová část 40 8 20 50 sekvenční část 1 2 8 20 25 40 48 50 J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 18

Operace na B+ stromu Uvažujeme pro jednoduchost index s unikátními hodnotami Vyhledání Nastav kořen jako aktuální uzel; WHILE aktuální uzel není listem DO BEGIN END Najdi nejmenší hodnotu vyhledávacího klíče K i v uzlu, která je větší než hledaná hodnota; IF existuje THEN ELSE Nastav jako aktuální uzel, na který ukazuje P i Nastav jako aktuální uzel, na který ukazuje poslední ukazatel v aktuálním uzlu IF existuje v aktuálním uzlu hodnota K i rovná hledané hodnotě THEN Ukazatel P i ukazuje na hledaný záznam J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 19

ELSE Záznam s hledanou hodnotou neexistuje; Vkládání Najdi listový uzel U, který by měl obsahovat novou položku indexu; IF je v uzlu U místo pro vložení položky THEN ELSE Vlož položku indexu do uzlu U BEGIN /* Rozštěpení uzlu */ Alokuj nový uzel U indexu; Rozděl hodnoty štěpeného uzlu U včetně vkládané hodnoty na dvě stejně velké skupiny. Jedna zůstane v uzlu U a druhá se přesune do uzlu U ; REPEAT Rekurzivně pokračuj s vkládáním nové položky indexu do uzlu předchůdce ve stromu s první J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 20

END; hodnotou vyhledávacího klíče uzlu U a ukazatelem na tento uzel UNTIL nedošlo k dalšímu štěpení nebo byl rozštěpen kořen IF byl rozštěpen kořen THEN Rušení Vytvoř nový kořen s ukazateli na dva uzly vzniklé rozštěpením původního kořene; Najdi listový uzel U, který obsahuje rušenou položku indexu; Zruš položku indexu v uzlu U; IF kleslo zaplnění uzlu U pod (n-1)/2 THEN IF lze přesunout obsah do levého souseda uzlu U THEN /* slévání uzlů*/ Přesuň obsah uzlu U a zruš prázdný uzel U; REPEAT J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 21

ELSE Rekurzivně pokračuj s rušením položky indexu s ukazatelem na uzel U v uzlu předchůdce ve stromu UNTIL nedošlo k dalšímu slévání nebo bylo dosaženo kořene; IF kořen má jen jednoho následníka THEN Zruš kořen, novým kořenem se stane následník BEGIN /* redistribuce hodnot*/ END Redistribuuj hodnoty a ukazatele sousedních uzlů tak, aby oba splňovaly podmínku minimálního zaplnění; Aktualizuj hodnotu vyhledávacího klíče v uzlu předchůdce ve stromu J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 22

Organizace souborů jako B+strom - primární soubor tvoří sekvenční část indexu - při vkládání a rušení se uvažuje větší počet sourozeneckých uzlů (úspora prostoru) lepší využití ( 2n/3 ), vyšší režie J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 23

Př) Uvažujme index pro primární klíč tabulky, která má 15000 řádků ve tvaru B+ stromu. Blok primárního souboru obsahuje až 20 záznamů na blok. Jaký bude počet bloků a úrovní indexu, obsahuje-li blok indexu maximálně 50 hodnot primárního klíče? Min. počet ukazatelů Max. počet ukazatelů Indexová část 51/2 = 26 51 Sekvenční část (51-1)/2 = 25 50 Úroveň Sekvenční Minimální zaplnění (maximum bloků) Maximální zaplnění (minimum bloků) 15000/25 = 600 bloků 15000/50 = 300 bloků Indexová X 600/26 = 23 bloků 300/51 = 6 bloků Indexová X-1 1 1 Index bude mít 3 úrovně. Sekvenční část indexu bude mít 300 až 600 bloků a indexová bude tvořena kořenem a jednou úrovní s 6 až 23 bloky. J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 24

6.8. Hašování Hašované soubory (přímé hašování) Hašovací funkce převádí hodnotu vyhledávacího klíče na adresu sektoru záznamů (typicky blok). hodnota klíče k hašovací funkce h(k) sektor1 sektor2... sektorn Požadavky na hašovací funkci - rozložení hodnot je rovnoměrné - rozložení hodnot je náhodné Př) Hašovaný soubor se záznamy tabulky Ucet a) pro vyhledávací klíč pobočka (velká banka s množstvím poboček). J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 25

- 27 sektorů s rozdělováním podle prvního písmene názvu - jednoduché, ale rozdělení nebude rovnoměrné b) pro vyhledávací klíč stav - rozdělení na intervaly, např. 0 100000, 101000 200000,... - jednoduché, ale rozdělení nebude rovnoměrné Typické hašovací funkce - součet_bin_reprezentace_znaků_řetězce MOD počet_sektorů Přetečení sektorů nedostatečný počet sektorů - musí platit: n s > n z /z s, kde n s je počet sektorů n z je celkový počet záznamů a z s je počet záznamů sektoru přetížení některých sektorů (skew) - nerovnoměrné rozdělení hodnot vyhledávacího klíče nebo nerovnoměrné rozdělení počtu hodnot se stejnou hodnotou vyhledávacího klíče J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 26

- počet sektorů se volí (n z /z s )*(1+d), kde d je faktor korekce (fudge), typicky 0.2 - řešení řetězením přetokových sektorů Hašované indexy (nepřímé hašování) - soubor může být hašovaný pouze podle jednoho vyhledávacího klíče - u hašovaného indexu jsou v sektorech položky s hodnotou vyhledávacího klíče a ukazatelem do souboru (obdoba sekundárních indexů) Nevýhoda statického hašování - hašovací funkce se musí zvolit při implementaci, resp. definici hašovaného souboru a nelze ji snadno změnit se změnou velikosti tabulky Dynamické hašování - dynamická modifikace hašovací funkce tak, aby odrážela změny velikosti tabulky J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 27

Rozšířitelné hašování h(k) 32b prefix globální prefix 2 lokální prefix 000 001 010 011 100 101 110 111 3 adresář 3 3 1 sektory J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 28

6.9. Shlukování (clustering) Podstata - umístění záznamů se stejnými vlastnostmi (hodnotou tzv. klíče pro shlukování (cluster key)) fyzicky blízko u sebe - přístup k záznamům prostřednictvím indexu (v listové části jsou přímo záznamy) nebo hašováním (obyčejné přímé hašování) - v souboru mohou být záznamy jedné nebo několika tabulek Př) shlukování v Oracle (viz Dodatek B) J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 29

6.10. Bitmapové indexy Podstata - uložení informace o tom, ve kterých záznamech tabulky se vyskytuje daná hodnota vyhledávacího klíče, ve formě bitových vektorů velikost bitmapového souboru je výrazně menší Předpoklad - očíslování jednotlivých řádků tabulky - ve sloupci vyhledávacího klíče je relativně málo různých hodnot Př) Klient číslo záznamu r_cislo jmeno prijmova skupina mesto 0 440726/0672 Jan Novák S2 Brno 1 530610/4532 Petr Veselý S3 Brno 2 601001/2218 Ivan Zeman S1 Brno 3 510230/048 Pavel Tomek S2 Brno 4 580807/9638 Josef Mádr S5 Brno 5 625622/6249 Jana Malá S2 Vyškov J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 30

Bitmapy pro příjmovou skupinu S1 001000 S2 100101 S3 010000 S5 000010 Bitmapy pro město Brno 111110 Vyškov 000001 Použití - dotazy na hodnoty několika vyhledávacích klíčů spojené logickými spojkami Př) Najdi klienty z Brna z příjmové skupiny S2. 111110 100101 = 100100 vyberou se odpovídající záznamy - agregační funkce COUNT (sloupec_vyhledávacího_klíče) Př) Kolik klientů z Brna patří do příjmové skupiny S2? počet_jedniček(111110 100101) = počet_jedniček (100100) = 2 J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 31

Implementace - využití instrukcí pro logické operace po bitech - uložení tzv. existenční bitmapy pro informaci o zrušených záznamech - pole pro převod bitového vektoru (např. byte) na počet jedniček v něm J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 32

6.11. Fyzický návrh databáze Zdroje - nefunkční (výkonnostní požadavky) - pochopení zátěže Popis zátěže Seznam dotazů a jejich četnosti - které tabulky se čtou - které atributy jsou vybírány (klauzule SELECT) - atributy se vyskytují v podmínkách selekce nebo spojení (klauzule WHERE) a jak selektivní tyto podmínky jsou Seznam aktualizací a jejich četnosti - atributy se vyskytují v podmínkách selekce nebo spojení (klauzule WHERE) a jak selektivní tyto podmínky jsou - typ aktualizace (INSERT, DELETE, UPDATE) a aktualizovaná tabulka J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 33

- pro UPDATE sloupce, které jsou modifikovány Výkonnostní požadavky pro každý typ dotazu a aktualizace Základní rozhodování fyzického návrhu Kdy a jaké přístupové metody použít - pro které tabulky a které sloupce, resp. kombinace sloupců - typ přístupové metody Základní zásady pro výběr indexů: 1. Zda indexovat Nevytvářej index, pokud nepřispěje ke zrychlení dotazů, resp. přístupu při aktualizaci. Důležité kritérium selektivita dotazu, 2. Volba vyhledávacího klíče Sloupce v klauzulích WHERE a výrazech s JOIN jsou kandidáty na vyhledávací klíč. Pro porovnání na rovnost je efektivnější hašování, pro rozsahové dotazy je nutné použít B+ stromy. J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 34

3. Složené vyhledávací klíče Složené vyhledávací klíče zvažuj v těchto situacích: a) Klauzule WHERE obsahuje podmínky pro více než jeden sloupec tabulky. b) V případě, kdy bude možné použít pro vyhodnocení dotazu strategii založenou jen na indexu. 4. Zda použít shlukování záznamů (clustering index) Pro tabulku lze použít nejvýše jedno shlukování. Hlavní přínos je pro rozsahové dotazy. Může-li dotaz být řešen strategií založenou jen na indexu, cluster nic nepřináší. 5. Hašování vs. B+strom SELECT a SELECT a FROM R FROM WHERE a = c; WHERE a BETWEEN c1 AND c2; B+stromy jsou obecnější (rozsahové dotazy). Hašování je výhodnější v těchto situacích: a) Pro podporu přirozeného spojení a spojení na rovnost metodou hash join (pro). b) Existuje-li velmi významný dotaz na rovnost a nejsou rozsahové dotazy se sloupci vyhledávacího klíče. c) Lze-li určit potřebný prostor pro statické hašování. J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 35

6. Vyvážení režie údržby indexu Po vytvoření seznamu žádoucích indexů zvažuj dopad na aktualizace. a) Pokud údržba indexu zpomalí významné aktualizační operace, vyřaď ho ze seznamu. b) Pamatuj ale, že přidání indexu může významně urychlit i aktualizační operace (prohledávací UPDATE a DELETE). Zda modifikovat konceptuální schéma z důvodu vyšší výkonnosti Alternativní normalizované schéma, je-li více možností Denormalizace - omezení spojování tabulek vs. nebezpečí nekonzistence a prostor. Vertikální rozčlenění tabulky - jsou-li významné dotazy jen na některé sloupce rozsáhlé tabulky. Replikace dat Zda přepsat často prováděné dotazy a transakce, aby byly rychlejší J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 36

Literatura 1. Silberschatz, A., Korth H.F, Sudarshan, S.:Database System Concepts. Fourth Edition. McGRAW-HILL. 2001, str. 393 492. 2. Pokorný, J.: Databazová abeceda. Science, Veletiny, 1998, str. 27 34, 81 88. 3. Ramakrishnan, R.: Database Management Systems. WCB/McGraw- Hill, 1998, str. 436 468. J. Zendulka: Databázové systémy 6 Fyzická (interní) úroveň databázového systému 37