Bevezetés
a költség alapú
tervválasztásba II.
Végrehajtási
tervek megváltoztatására hintek
segítségével
valamint
statisztikák
létrehozásával és
törlésével _______________________________________________________________ Segédanyagok:
>> Oracle Doc. -
Performance Tuning Guide HTMLPDF
és itt 13-19. fejezetek,
lásd 16. fejezet: Hintek
használata: 16.
Using Optimizer Hints
[hintsref.htm]
lásd 14. fejezet:
Statisztikák kezelése: 14.
Managing Optimizer Statistics [stats.htm]
>> Nikovits Tibor: hintek.txt
és
tervek2.txt
és tervek3.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
(ha az
eredménytábla nagy, akkor annak az első
5
sora),
3.) végrehajtási
tervek
fastruktúrájának szöveges
megjelenítése (lásd 8.gyak#elok)
- 1.lépés:
Készítsük el az
utasítások végrehajtási
tervét a
a
PLAN_TABLE
táblába:
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); _______________________________________________________________ Végrehajtási
tervek
megváltoztatása hintek (tipp lista)
segítségével
2.1.feladat: --
8.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_nézetekből)
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).
- Lásd még a
tervek2.txt és a tervek3.txt feladatait!
______________________________________________________________ Végrehajtási
tervek
megváltoztatása statisztikák
létrehozásával és
törlésével
3.1.feladat: (Papíron oldjuk meg!)
- 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: (Papíron oldjuk
meg!)
- 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)
3.3.feladat:
-
Hozzatok létre egy saját
példányt a
nikovits.szallit táblából
és indexet a
datum
oszlopra,
majd adjatok meg egy olyan
lekérdezést, amelyik egy általatok
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étek el
(hint 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.
_______________________________________________________________ Kötelező
házi feladat:
Kérem, hogy a mai gyakorlat
lekérdezéseit
és
végrehajtási terveit a mai óra
végén
vagy legkésőbb a
következő gyakorlatig küldje be emailben
"<ehakod>_9gy.txt"
nevű szöveges fájlban (ahol az
<ehakod>
helyére a saját ETR
azonosító
kerüljön).