AB2gyak
(főmenü) Gyak.köv.
AB2ea
3.gyak 5.gyak
OracleDoc
4.gyak.
Indexstruktúrák-I.
G (gépes témakör)
> G6. Feladatok
indexekre és bitmap indexekre
E (elméleti témakör)
> E1.
Hasítóindex szervezés (Tk.4.4.
fejezete)
> E2.
Indexstruktúrák
(Tk.4.1.- 4.2. fejezete)
G6.
Feladatok
indexekre és bitmap indexekre
Segédanyagok: Lásd
Indexek.txt
CREATE
INDEX példáit
>> OracleDoc:
SQL Language Reference >> innen CREATE
INDEX
példák
>> OracleDoc:
Concepts >> 3
Overview of Indexes
6.01. Hozzunk létre egy vagy több
táblához több
különböző indexet!
Legyen köztük
több oszlopos, csökkenő
sorrendű, függvény
alapú,
fordított kulcsú
(reverse), bitmap
index, stb.
Állapítsuk meg ezeknek az indexeknek a
különböző tulajdonságait
a
katalógusokból.
DBA_INDEXES,
DBA_IND_COLUMNS, DBA_IND_EXPRESSIONS
6.02. Adjuk meg azoknak a
tábláknak a
nevét, amelyeknek van csökkenő
sorrendben
indexelt
oszlopa.
6.03. Adjuk meg azoknak az indexeknek a
nevét, amelyek legalább 9 oszloposak
(vagyis a
táblának legalább 9
oszlopát vagy egyéb
kifejezését indexelik).
6.04. Adjuk meg az SH.SALES
táblára létrehozott bitmap indexek
nevét.
6.05. Adjuk meg azon kétoszlopos
indexek nevét és tulajdonosát,
amelyeknek
legalább az egyik
kifejezése függvény alapú. Adjuk meg az
egyikükre,
például az OE
tulajdonában lévőre, hogy milyen kifejezések
szerint
vannak
indexelve a soraik (vagyis mi a
függvény, ami
alapján a
bejegyzések készülnek).
E1.
Hasítóindex
szervezés (Tk.4.4.
fejezete)
Segédanyagok:
Hasító
index, lásd
2.előadás: fizika.p9,
fizika.pp11-16
és fizika.pp17-20
Molina-Ullman-Widom: Adatbázisrendszerek
megvalósítása, Panem, 2001.
4.fej. Indexstruktúrák -> 4.4.
Tördelőtáblázatok dinamikus_tordeles.pdf
Feladatok:
E1.1 Kiterjeszthető
hasító index (vagy
másképp kiterjeszthető
tördelőtáblázat)
A
kosártömb mérete
mindig pontosan 2**i.
Tegyük fel, hogy
egy blokkba 2 rekord
fér el, j
értéke (a blokkok jobb oldalán)
azt
jelzi, hogy hány bit használatos a blokkhoz
tartozás eldöntésére.
i=1 ---- 0001
0 | -|---> ----1
| |
1 | -|---> 1001
---- 1100
----1
kosártömb
blokkok
Szúrjuk be az
alábbi
hasító
értékkel rendelkező sorokat egymás
után,
és minden
újabb blokk
létrehozása
után rajzoljuk újra a
kosártömböt
és a blokkokat.
0001, 0110, 1011, 0111, 1100, 1111, 0100
-- Egy kis segítség a kiterjeszthető
hasító
indexhez:
A K kulcsú rekordot h(K) első i bitje alapján
helyezzük el úgy, hogy
követjük a kosártömb ezen
bejegyzéséhez tartozó
mutatót.
Ha nincs hely a megtalált blokkban akkor a
következőt tesszük:
1. Ha j < i akkor újabb blokkot hozunk
létre és a j+1-edik bit alapján
kettéosztjuk a rekordokat a két blokk
között
(mindkét blokkra j+1 lesz
az új
érték), majd a kosártömb
szükséges
mutatóit az új blokkra
irányítjuk.
2. Ha j = i akkor először i-t növeljük
1-gyel, megduplázzuk a
kosártömböt,
új
mutatókat teszünk bele, majd alkalmazzuk 1.-et.
E1.2. Lineáris hasító index
Az előre megadott
küszöbszám (rekordok
száma/kosarak száma)
legyen 2,4.
(H.F.: Nézzük meg akkor is, ha a
küszöbszám 1,7!)
Készítsünk lineáris
hasító
indexet, tegyük fel, hogy egy blokkba
2 rekord
fér el
és a
kosarak az alábbi rekordokat
tartalmazzák:
0000 0101
1110
---- ----
0 1
Szúrjuk
be az alábbi hasító
értékkel rendelkező sorokat egymás
után,
és minden
újabb blokk megnyitás után rajzoljuk
újra a
kosarakat.
0001, 0110, 1011, 0111, 1100, 1111, 0100
-- Egy kis segítség a
lineáris hasító indexhez:
Ha n kosarunk van, akkor a K kulcsú rekordot h(K)
utolsó
i bitje alapján
tesszük a megfelelő kosárba (i=log2n).
Ha nincs benne hely, akkor újabb blokkot
láncolunk ehhez
a kosárhoz.
Ha nincs ilyen kosár, akkor az első bitben
különböző kosárba
tesszük.
Ha az előre megadott küszöböt
átléptük, akkor új kosarat
nyitunk.
Szükség esetén
növeljük i-t
E2.
Elsődleges és másodlagos indexek (Tk.4.1-4.2.
fejezete)
Tk.4.1.1.feladat, lásd előadás fizika.p26 és
fizika.p34
- Minden blokkba 3 rekord, vagy 10
indexrekord (érték-mutató
pár) fér.
Összesen 3000 rekordunk van.
Hány blokkos az adatfájl, a sűrű index
és
a ritka index?
Tk.4.1.2.feladat:
- Minden blokkba 30 rekord, vagy 200
indexrekord (érték-mutató
pár) fér.
Összesen n rekordunk van.
Egyik blokk telítettsége sem lehet több,
mint 80%.
Hány blokkos az
adatfájl, a sűrű index és a ritka index?
Tk.4.1.3.feladat:
- Minden blokkba 3 rekord, vagy 10
indexrekord (érték-mutató
pár) fér.
Összesen n rekordunk van.
Többszintű indexünk legfelső szintje csak
1 blokkból áll.
Hány blokkos az indexfájl, ha az első szinten
sűrű az index,
és ha az első szinten ritka
az index?
Tk.4.2.1.feladat:
- Az adatfájlba
történő
beszúrás és törlés
esetén a
másodlagos indexfájlnak
változnia kell.
Javasoljunk
néhány módszert arra,
hogy lehet naprakészen
tartani a másodlagos
indexet az adatfájlok változásaival
szinkronban.
Tk.4.2.4.feladat, lásd előadás fizika.p43
- Minden blokkba 3 rekord, vagy 10
indexrekord (kulcs-mutató
pár), vagy
50 mutató fér.
Tegyük fel, hogy
átlagosan 20-szor szerepel minden
indexérték.
Összesen 3000 rekordunk van.
Másodlagos
indexet készítünk, úgy, hogy
az
egy indexértékhez
tartozó
mutatókat kosarak blokkjaiban tároljuk. Mekkora
az állomány
mérete
összesen, beleértve az adatokat, indexeket
és
mutatókat
tartalmazó
blokkokat?