_______________________________________________________ 6. gyak. (X.18)
- Végrehajtási tervek + hint
Segédanyagok:
- Kiss Attila előadásaihoz kapcsolódó
anyag: az
előadó honlapján
- Oracle Database Online
Documentation Library 10g könyvtárban Administration
felsőmenü alatt az "Performance" részben
Performance Tuning Guide
HTMLPDF
Part IV. Optimazing SQL
Statements
Feladatok a lekérdezések
optimalizálására Algebrai optimalizálás
(heurisztikán alapuló
optimalizálás)
- lásd Az
órai adatbázissémák
2. példáját (E/K modell,
rel.sémák)
- Vizsgáljuk meg a táblák
szerkezetét, integritási
megszorításokat!
- Fejezzük ki (többféleképpen
is) SQL SELECT-tel:
Kik (HAZON, NEV) azok a
'PTM'-szakos hallgatók, akiknek
az ösztöndíjuk nagyobb,
mint 10000 és 2005. évben
3-nál
jobb jegyet szereztek
'Adatbázisok1' elnevezésű
tantárgyból?
7opt_01
- A fenti több táblás
lekérdezés algebrai
optimalizációjára példa
segédanyag:
lásd rAlgOpt.rtf
lásd még EA
67-99.o. (.ppt /jelszóval : Kiss Attila EA)
Lekérdezések
végrehajtási terve (költség
alapú optimalizálás)
- A lekérdezések
végrehajtási tervét az Oracle egy
PLAN_TABLE nevű
vagy ezzel azonos szerkezetű táblába
teszi.
- PLAN_TABLE létrehozása -> ablinux
gépen található script
futtatásával
/opt/oracle/product/10.2/db_1/rdbms/admin/utlxplan.sql
- Végrehajtási terv
létrehozása a PLAN_TABLE nevű
táblába:
EXPLAIN PLAN SET
statement_id='utasitas_egyedi_neve'
FOR
SELECT ...
- Majd a végrehajtási terv fa
struktúrájának
kiíratása
egy hierarchikus
lekérdezéssel:
PROMPT "Adja meg az utasítás
nevét: "
ACCEPT ut
SELECT LPAD(' ', 2*level)||operation||'
'||options||' '||object_name
terv
FROM plan_table
START WITH id = 0 AND statement_id =
'&&ut'
CONNECT BY PRIOR id = parent_id AND statement_id =
'&&ut';
7opt_01
7opt_02
- Lekérdezésekre és a
végrehajtási tervekre
példák: tervek1.txt
7opt_03
- Az ORAUSER felhasználó EMP, DEPT es SALGRADE
(fizetési kategóriak)
tábláiból
hozzatok létre
saját példányokat, ezekre
vonatkozóan
adjátok meg
az alábbi
lekérdezést, majd
derítsétek ki a
végrehajtási tervek fa
struktúráját.
- A fa csomópontjaiban az ott elvégzett műveletet
es azt az objektumot kell
megadni, amin a műveletet az
adatbáziskezelő végzi.
A lekérdezés:
- Adjuk meg azoknak az osztályoknak a neveit, amelyeknek van
olyan dolgozója,
aki az 1-es fizetési
kategóriába esik.
- Adjuk meg, hogy milyen végrehajtasi tervet
készít a rendszer.
- Hozzunk létre indexet valamelyik
táblához, majd adjuk meg a rendszer
által létrehozott
új
végrehajtási tervet. Olyan indexet hozzunk
létre,
amit
a lekérdezésben használni
tud a rendszer.
- Az EMP es a DEPT táblát most úgy
hozzuk létre (pl. EMP2 es DEPT2 néven),
hogy azok egy clusteren legyenek. Adjuk meg az
ehhez létrehozott végrehajtási tervet.
stb. Végrehajtási tervek
megváltoztatása tippek (hint)
segítségével
Budapest,
2007. szeptember 10. Utolsó
módosítás: 2007.
okt.25.