Kezdőlap     AB2ea     AB2gyak (főmenü)     4.gyak     6.gyak (I.ZH) 

5.gyak. Feladatok partíciókra és klaszterekre
   
G (gépes témakör)
> G7. Feladatok index szervezett táblákra (IOT)
> G8. Partícionált táblák létrehozása és kezelése
> G9. Klaszterek létrehozása és kezelése
E (elméleti témakör)
> E6. Lekérdezések végrehajtása (I/O költségek)
   

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.txt CREATE 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.
   
Fel a lap tetejére (mai gyak témakörei)      Vissza az AB2gyak kezdőlapjára  

    
G8. Partícionált táblák létrehozása és kezelése
   
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.txt  CREATE 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)
   
Fel a lap tetejére (mai gyak témakörei)      Vissza az AB2gyak kezdőlapjára  

  
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.txt  CREATE 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.)
   
Fel a lap tetejére (mai gyak témakörei)      Vissza az AB2gyak kezdőlapjára  

   
E6. Lekérdezések végrehajtása (I/O költségek)

   
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)
      
Fel a lap tetejére (mai gyak témakörei)      Vissza az AB2gyak kezdőlapjára