A
gyakorlati
foglalkozás és az
előadások
anyagára épül. 8.EA: Oracle
lekérdezések végrehajtási
tervei 9ituning-hu.ppt (KA)
-- a fenti bemutató Oracle 9i
példáit a gyakorlaton Oracle 11g-ben
nézzük
meg!
-- Oracle 11g Doc. Performance Tuning Guide HTMLPDF
itt 11-21.fejezetek, az
áttekintést
lásd 11.
The Query Optimizer
12.témakör:
Végrehajtási
tervek megváltoztatása
hintek (tipp-lista) segítségével
Segédanyagok:
>> Kiss
Attila Adatbázisok-2 előadása 9ituning
75-76.o: Hints
>> Oracle 10g Doc. Performance Tuning Guide HTMLPDF
és itt 13-19.fejezetek,
lásd 16. fejezet: Hintek
használata: 16.
Using Optimizer Hints
[hintsref.htm]
>> Oracle 11g Doc. Performance Tuning Guide HTMLPDF
és itt 11-21.fejezetek,
lásd 19. fejezet: Hintek
használata: 19.
Using Optimizer Hints
>> Nikovits Tibor: hintek.txt
és
tervek2.txt _______________________________________________________________ A zh és
beküldendő
feladatoknál egy
szöveges állományba
bemásolva
beküldendő:
1.) SELECT
/*+ tipp lista */ ... vagyis
a lekérdezés
(hintekkel együtt),
2.) lekérdezés
outputja
("SCIPT OUTPUT"-ból az
eredménytábla első
5
sorát),
3.) végrehajtási
tervek
szöveges
megjelenítése ("EXPLAIN
PLAN OUTPUT"-ból)
-- Ehhez az
1.lépés:
Készítsük el az
utasítások végrehajtási
tervét:
EXPLAIN
PLAN FOR SELECT ...
--
2.lépés: A
végrehajtási tervek
megjelenítése a
dbms_xplan package
segítségével:
SELECT
plan_table_output FROM table(dbms_xplan.display); _______________________________________________________________ 2.1.feladat:
-- 7.gyak. 2.feladatának a
folytatása Lekérdezések
és végrehajtási
tervek
(megváltoztatása hintek
segítségével) NIKOVITS.CIKK,
SZALLITO, PROJEKT,
SZALLIT táblái alapján
- Vagyis most ne hozzunk létre saját
példányokat, hanem egy adott séma
tábláit
használjuk a
lekérdezéseknél, a
táblák elérése: NIKOVITS.<táblanév>
- A táblákhoz
különböző
indexek is vannak
létrehozva, ezek tulajdonságait
a katalógusokból
(dba_indexes)
nézhetjük meg, amikor
szükségünk van rá.
- NIKOVITS
felhasználó tulajdonában levő
táblákra adjuk meg a
következő
lekérdezéseket és a
hozzá tartozó
végrehajtási tervet
(mentsük le
szövegfájlba).
Minden esetben
lehet hinteket használni. Lásd hintek.txt
- Adjuk meg a piros cikkekre vonatkozó
szállitások
összmennyiségét.
a) Adjuk meg úgy a
lekérdezést, hogy egyik
táblára se
használjon indexet az oracle.
b) Adjuk meg úgy a
lekérdezést, hogy csak az egyik
táblára
használjon indexet az oracle.
c) Adjuk meg úgy a
lekérdezést, hogy mindkét
táblára
használjon indexet az oracle.
d) Adjuk meg úgy a
lekérdezést, hogy a két
táblát
SORT-MERGE
módszerrel kapcsolja össze.
e) Adjuk meg úgy a
lekérdezést, hogy a két
táblát
NESTED-LOOPS
módszerrel kapcsolja össze.
f) Adjuk meg úgy a
lekérdezést, hogy a két
táblát
NESTED-LOOPS
módszerrel kapcsolja össze,
és ne
használjon indexet.
2.2.feladat:
- Adjuk meg a Pecs-i telephelyű
szállítók által
szállított piros cikkek
összmennyiségét.
a) Adjuk meg úgy a
lekérdezést, hogy a
szallit táblát először a cikk
táblával join-olja az oracle.
b) Adjuk meg úgy a
lekérdezést, hogy a
szallit táblát először a szallito
táblával join-olja az oracle.
2.3.feladat:
- Adjuk meg azon
szállítások
összmennyiségét, ahol ckod=1
és szkod=2.
a) Adjuk meg úgy a
lekérdezést, hogy ne használjon
indexet.
b) A
végrehajtási tervben két
indexet használjon, és képezze a
sorazonosítók metszetét
(AND-EQUAL).
2.4.feladat:
- Adjuk meg azon
szállítások
összmennyiségét, ahol ckod=1 vagy
szkod=2.
a) Adjuk meg úgy a
lekérdezést, hogy
ne használjon indexet.
b) A végrehajtási
tervben két indexet
használjon, és képezze a kapott sorok
unióját
(CONCATENATION).
Előkészítésként
nézzünk meg
két papíron megoldandó
feladatot a
statisztikákról: Tankönyv 7.5. szakasz - Statisztikák
kiszámítása (Papíron
oldjuk meg!)
3.1.feladat:
- Hozzunk létre 5 intervallumos
magasság
alapú hisztogramot az alábbi
eloszlású
adatokra vonatkozóan, vagyis adjuk
meg az egyes intervallumok végpontjait.
1-100 (3), 101-300 (2),
301-500
(1), 501-600
(3)
(Az előfordulások
száma zárójelben szerepel,
pl. 1-100 (3)
azt jelenti, hogy
1 és 100
között minden
érték háromszor fordul elő,
vagyis 1 és
100
között
300 előfordulás
van. Ezek
szerint a
táblának összesen
hány sora is
van?)
3.2.feladat:
-
Hozzunk létre 5 intervallumos
szélesség (gyakoriság)
alapú hisztogramot
is
ugyanezekre az adatokra: 1-100 (3), 101-300 (2),
301-500
(1), 501-600
(3)
>> Tk.7.4-7.7.
Költség alapú
optimalizálás, statisztikák
Ezután nézzük meg gépnél az
Oracle megoldásait (ez nem szerepel a zárthelyi
dolgozatban) 3.3.feladat:
-
Hozzunk létre egy saját
példányt a
nikovits.szallit táblából
és indexet a
datum
oszlopra,
majd adjunk meg egy olyan
lekérdezést, amelyik egy általunk
választott napra vonatkozóan
a
szállítások
összmennyiségét adja meg.
Statisztikák
létrehozásával illetve
törlésével
(lásd tervek3.txt)
érjük el
(hintek használata nélkül), hogy az
Oracle
egyszer
használjon
indexet, máskor pedig
(hisztogram
létrehozása vagy törlése
után) ne
használjon indexet.
Beadandó
feladat -
8gyak.
Kérem, hogy a gyakorlatok
lekérdezéseit és
azok végrehajtási terveit (vagyis az
"EXPLAIN
PLAN OUTPUT"-ot, ahogy az Oracle doksikban
van a
példáknál, mint itt)
mentsék
el egy "<ehakod>_8gy.txt" nevű szöveges
fájlba, ahol az
<ehakod>
helyére
a saját ETR
azonosítóját
.ELTE nélkül írja be. Ezt a .txt
fájlt az
óra végén vagy
legkésőbb a 9.gyakorlatot közvetlenül
megelőző szerda
éjfélig
küldjék el e-mailben.
A beadandó célja az
önálló gyakorlás,
lásd Gyakorlati
követelmények #Beadandó.