A
gyakorlati
foglalkozások az
előadások
anyagára épülnek 4.EA: A fizikai
fájlszervezés folytatása
(B-fák),
fizika.ppt (49-59 o.)
Bittérkép index, 9ituning.ppt (83-84 o.)
Bittérképek
tömörítése szakaszhossz
kódolással Szakaszhossz_kodolas.doc
Algebrai optimalizáció,
átalakítási szabályok
algebrai_opt.ppt (106-126 o.)
-- előadáshoz kapcsolódó
további olvasmány:
Molina-Ullman-Widom: Adatbázisrendszerek
megvalósítása, Panem, 2001.
4.3. B-fák
5.4. Bittérképindexek
7.2. Algebrai szabálsok
lekérdezéstervek
javítására G6.
Feladatok
indexekre és bitmap indexekre
Segédanyagok: Lásd
Indexek.txtCREATE
INDEX példáit
(valamint az SQL Reference
CREATE
INDEX
példáit)
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ú .
6.06. Adjuk meg az egyikükre, pl. 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.)
E3.
Elsődleges és másodlagos indexek (Tk.4.1-4.2.
fejezete)
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?
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?
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?
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.
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 10-szer 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?
B-fa felépítésére
feladat, lásd előadás fizika.pp49-58
- Az alábbi feladatban a
tankönyben
szereplő algoritmussal építsünk fel egy
B-fát!
Tegyük fel, hogy egy B-fa
blokkjaiba 3 kulcs
fér el plusz 4 mutató. A kulcsok
különbözőek.
Szúrjuk be a
B-fába az alábbi
kulcsértékeket a megadott
sorrendben:
39, 15,
50, 70, 79,
83, 72, 43, 75, 45
Adjuk meg a B-fa minden olyan
állapotát, amikor egy csomópont
kettéosztására
volt
szükség. Például, az
első
kettéosztás utáni állapot:
50
15
| 39 50 | 70
- [Egy kis segítség:]
-------------------
Levél csúcs
kettéosztásakor minden kulcsot megőrzünk
a
régi és az új (szomszédos)
csúcsban. 1 új
kulcs-mutató
párt küldünk felfelé a
szülő
csúcsba, amit ott kell elhelyezni.
Belső csúcs
kettéosztásakor
(N,M csúcsra) a mutatók első fele az N-be
kerül,
a második az M-be. A
kulcsok első fele az
N-be kerül a második fele az M-be,
de középen kimarad
egy kulcs, ami az
M-en keresztül (első gyermekén keresztül)
elérhető legkisebb kulcsot
tartalmazza. Ez
nem kerül sem N-be, sem M-be, hanem
ez megy fölfelé N
és M
közös szülőjébe az M-re
mutató
mutatóval együtt.
4.3.1.feladat (kicsit más adatokkal)
- Legyen a rekordok száma
6000, és az
indexelt oszlopban minden
érték
különböző.
Sűrű indexre
készítünk B-fát. Egy blokkba
4 rekord vagy
(99 kulcs és 100
mutató) fér.
Legyen a telítettség 50%, azaz
legalább
Mekkora az adatfájl
és az index
együttes mérete?
Mennyi a
keresés blokkolvasási
költsége?
1.feladat: Tegyük fel, hogy a
dolgozó
tábla 14 sorból áll
DKOD
DNEV FIZETES FOGLALKOZAS
BELEPES OAZON --------------------------------------------------- 1
SMITH 800
CLERK
1980 20 2
ALLEN 1600
SALESMAN
1981
30 3
WARD 1250
SALESMAN
1981
30 4
JONES 2975
MANAGER
1981
20 5
MARTIN 1250
SALESMAN
1981
30 6
BLAKE 2850
MANAGER
1981
30 7
CLARK 2450
MANAGER
1981
10 8
SCOTT 3000
ANALYST
1982
20 9
KING 5000
PRESIDENT
1981
10 10
TURNER 1500
SALESMAN
1981
30 11
ADAMS 1100
CLERK
1983
20 12
JAMES 950
CLERK
1981
30 13
FORD 3000
ANALYST
1981
20 14
MILLER 1300
CLERK
1982
10
-
Tegyük fel,
hogy fenti
táblához a FOGLALKOZAS, a BELEPES
és az
OAZON
oszlopokra létezik bitmap
index (3 index). Készítsük el az
alábbi lekérdezésekhez
szükséges
bitvektorokat, majd végezzük el rajtuk a
szükséges műveleteket, és
adjuk meg azt
az előállt bitvektort, ami alapján a
végeredmény sorok
megkaphatók.
Ellenőrzésképpen
adjuk meg a
lekérdezést SQL-ben is!
a. ) Adjuk meg azoknak a dolgozóknak a
nevét, akik 1981-ben léptek be
és a foglalkozásuk
hivatalnok (CLERK), vagy a
20-as osztályon dolgoznak és a
foglalkozásuk MANAGER.
b.) Adjuk meg azoknak a dolgozóknak a
nevét, akik nem 1981-ben léptek be és
a 10-es
vagy a
30-as osztályon dolgoznak.