A
gyakorlati
foglalkozások az
előadások
anyagára épülnek 5.EA: A relációs algebrai műveletek megvalósítása,
egy és többmenetes algoritmusok. A műveleti költségek,
outputméretek becslése, optimization.ppt (1-41 o.)
Összekapcsolások sorrendje, dinamikus programozás
20_joinorder.ppt (8-14 o.) 09_qp_opt.ppt (1-21 o.)
-- előadáshoz kapcsolódó
további olvasmány:
Molina-Ullman-Widom: Adatbázisrendszerek
megvalósítása, Panem, 2001.
6.fej. Lekérdezések végrehajtása G7.
Feladatok
index szervezett táblákra (IOT)
Segédanyagok:
Lásd IOT.txtCREATE
TABLE
...
ORGANIZATION
INDEX
Index szervezett táblák. Objektumok
azonosítója és adatobjektum
azonosítója.
IOT részei (index, tábla) és ezek
felderítése a katalógusban
(References).
7.01. Hozzuk létre a IOT.txt
segédletben szereplő cikk_iot indexszervezésű
táblát.
Adjuk meg mely
felhasználók tulajdonában vannak ezek
('CIKK_IOT'-vel kezdődő)
index-szervezett
(IOT)
táblák. Adjuk meg a táblák
és
táblaterek nevét is.
(Melyik
táblatéren vannak ezek a
táblák? ->
miért nem látható?)
7.02. Adjuk meg a fenti
táblák index
részét, és azt, hogy ezek az index
részek (szegmensek)
melyik
táblatéren vannak?
7.03. Keressük meg a szegmensek
között az előző táblákat
illetve indexeket,
és
adjuk meg a
méretüket.
7.04. Keressük meg az
adatbázis objektumok
között a fenti táblákat
és indexeket,
és
adjuk meg az objektum
azonosítójukat és adatobjektum
azonosítójukat
(DATA_OBJECT_ID).
7.05. Adjuk meg a fenti
táblák túlcsordulási
részeit (ha van).
7.06. Keressük meg a
túlcsordulási
részeket a szegmensek között és
adjuk meg
a
méretüket.
7.07. Keressük meg az objektum
azonosítóikat és az adatobjektum
azonosítóikat is.
7.08. Adjuk meg azokat az index szervezett
táblákat, amelyeknek pontosan
egy
dátum
típusú oszlopa van.
HF05 Írjunk
meg
egy plsql
procedúrát,
amelyik a paraméterül kapott index
szervezett
tábláról
kiírja a
tábla méretét. PROCEDURE
iot_meret(p_owner
VARCHAR2, p_tabla VARCHAR2)
Vigyázzunk, mert a
táblának lehet index és
túlcsordulási szegmense is.
Táblák
partícionálása. Range, hash
és lista alapú
partícionálás.
Összetett partícionálás,
alpartíciók. Információk
felderítése a
katalógusban.
Lásd Particionalas.txtCREATE
TABLE...
PARTITION
BY RANGE/HASH/LIST stb...
példákat próbáljuk ki!
Oracle
dokumentációkból >>
Concepts >> Part III. Features >>
>> 18. Partitioned Tables,
Partitioning Methods, Partitioned Indexes
További feladatok az
adatszótárnézetek
lekérdezésére DBA_PART_TABLES,
DBA_PART_INDEXES,
DBA_TAB_PARTITIONS,
DBA_IND_PARTITIONS,
DBA_TAB_SUBPARTITIONS,
DBA_IND_SUBPARTITIONS,
DBA_PART_KEY_COLUMNS
8.01. Adjuk meg az SH
felhasználó
tulajdonában levő
partícionált táblák
nevét
és a
particionálás
típusát.
8.02. Soroljuk fel az SH.COSTS
tábla
partícióit valamint, hogy hány blokkot
foglalnak az
egyes
partíciók.
(Vigyázat!
Különböző értéket
kaphatunk a
különböző
adatszótárakban.
Ennek
magyarázatát lásd
később az ANALYZE
parancsnál)
8.03. Adjuk meg, hogy az SH.COSTS
tábla
mely oszlop(ok) szerint
van particionálva.
8.04. Adjuk meg, hogy a NIKOVITS.ELADASOK3
illetve az
SH.COSTS
táblák
második
partíciójában milyen
értékek szerepelhetnek.
8.05. Adjuk meg egy partícionált
tábla
logikai és fizikai részeit!
(pl. NIKOVITS.ELADASOK). Maga
a tábla most is logikai
objektum,
a
partíciói vannak fizikailag tárolva,
illetve ha alpartíciói is
vannak
(pl.
NIKOVITS.ELADASOK4), akkor csak
az
alpartíciók vannak tárolva.
Nézzük meg az
objektumok és a szegmensek
között is.
8.06. Melyik a legnagyobb méretű
partícionált tábla az
adatbázisban a partíciók
összméretét tekintve? (az
alpartícióval rendelkező
táblákat is
vegyük figyelembe)
G9.
Klaszterek
létrehozása és
kezelése
A
klaszterek használata. Több tábla
fizikailag egy
helyen tárolva.
Mi a közös a táblákban?
-> klaszter kulcs. Több oszlopos
klaszterkulcs,
több tábla a klaszteren. Index klaszter
és hash klaszter.
Lásd Klaszterek.txtCREATE
CLUSTER példáit
próbáljuk ki!
Oracle
dokumentációkból >>
Concepts >> Part II. Architecture
>> 5. Schema Objects
>> Overview of Clusters / Hash Clusters
További feladatok az
adatszótárnézetek
lekérdezésére DBA_CLUSTERS,
DBA_CLU_COLUMNS, DBA_TABLES,
DBA_CLUSTER_HASH_EXPRESSIONS
9.05. Hozzunk létre egy DOLGOZO(dazon,
nev,
beosztas, fonoke, fizetes, oazon)
és egy OSZTALY(oazon,
nev,
telephely) nevű táblát.
A két táblának
az osztály
azonosítója (oazon) lesz a
közös oszlopa. A
két táblát
egy CLUSTEREN
hozzuk létre. (Előbb
persze létre kell hozni a clustert
is.)
9.01. Adjunk meg egy olyan clustert az
adatbázisban (ha van ilyen), amelyen
még nincs egy tábla
sem.
9.02. Adjunk meg egy olyant, amelyiken
legalább 6 darab tábla van.
9.03. Adjunk meg egy olyan clustert, amelynek a
cluster kulcsa 3 oszlopból áll.
(Vigyázat!!! Több
tábla is lehet rajta)
9.04. Hány olyan hash cluster van az
adatbázisban,
amely nem az oracle
alapértelmezés
szerinti hash függvényén alapul?
9.05. Hozzunk létre egy hash clustert
és
rajta két táblát, majd
szúrjunk be
a
táblákba sorokat
úgy, hogy a
két táblának 2-2 sora ugyanabba a
blokkba kerüljön.
Ellenőrizzük is egy lekérdezéssel, hogy
a 4 sor
valóban ugyanabban a blokkban van-e. (A ROWID
lekérdezésével)
(A sorok
elhelyezését befolyásolni tudjuk a
HASH
IS
megadásával.)
Segédanyagok:
lásd előadás: Műveleti
költségek
becslése: optimization.pdf
(I.ZH-ban
csak 1-32 oldalig)
+ Nikovits Tibor rövid
összefoglalója: VegrKolts.pdf
(és a korábbi
félévek
cAMÜ
EA-ból:
LekVegreh1.pdf,
LekVegreh2.pdf )
Tankönyv: Molina-Ullman-Widom: Adatbázisrendszerek
megvalósítása, Panem, 2001.
"6.fejezet Lekérdezések
végrehajtása" kidolgozott
példái
- 6.3. Adatbázis-műveletek egymenetes algoritmusai egymenetes_algoritmusok.pdf
- 6.4. Beágyazott ciklusú
összekapcsolások nested_loop_algoritmus.pdf
- 6.5. Rendezésen alapuló kétmenetes
algoritmusok sort_join_algoritmus.pdf
- 6.6 Tördelésen alapuló
kétmenetes algoritmusok hash_join_algoritmus.pdf
- 6.7 Index alapú algoritmusok index_alapu_algoritmus.pdf
- 6.9. Többmenetes algoritmusok tobbmenetes_algoritmus.pdf
Adjuk meg, hogy az egyes algoritmusok hogyan működnek
és
adjuk meg a műveletek
költségbecslését (I/O blokkok
számát).
Tk.2.3.
fejezete:
Adatok
rendezése másodlagos
tárolókon
- Tegyük fel, hogy a
dolgozó
tábla 140 sorból áll és
10 sora fér el 1 blokkban,
és a
memóriánk 4 blokknyi. Rendezzük a tábla
sorait fizetés
szerint egy
külső rendezés alapú (sort-merge) algoritmussal.
Adjuk meg az
első menet után a
rendezett részlistákat (elég
a dnev,
fizetes).
Hány menetes algoritmusra
lesz
szükségünk? optimization-pp17-22.pdf
Tk.6.fejezet:
Lekérdezések végrehajtása,
műveletek I/O költsége
- Tegyük fel, hogy a dolgozó
tábla 140 sorból áll és
10 sora fér el 1 blokkban,
és a
memóriánk
most 6
blokknyi és van még egy
vásárlás tábla, amelynek
a
szerkezete a következő: VASARLAS(dkod, cikk, mennyiseg, ar).
Ennek a
táblának is 10 sora fér el 1 blokkban, és a tábla kb.1200 sorból
áll.
Mennyi a műveletigénye
- egy
beágyazott ciklusú
algoritmusnak nested_loop_algoritmus.pdf
- egy rendezés
alapú algoritmusnak sort_join_algoritmus.pdf
- egy hash
alapú algoritmusnak hash_join_algoritmus.pdf
amely egyenlőséges
összekapcsolást (equijoin) végez a
két
táblán, arra a
lekérdezésre
válaszol, hogy az
egyes
dolgozók összesen mennyit
költöttek?
Feltehetjük, hogy az
összegeket gyűjtő
számlálók még
beférnek a memóriába
a blokkok
mellett. Írjuk
le röviden, hogy az egyes algoritmusok hogyan fognak
működni. Adjuk meg a
kosarakat a
hasítás alapú
algoritmus első menete után.
Köv.héten:
I.ZH,
erről: I.ZH
infó
(Tárkezelés, fizikai
fájlszervezés,
indexstruktúrák)