2006. december 2.Markó Tamás, PTE TTK1 Az Oracle SQL 15. Hangolás.

Slides:



Advertisements
Hasonló előadás
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Advertisements

10. gyakorlat SQL SELECT.
Tananyag: konzultáció
2012. tavaszi félév Véső Tamás. A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges,
Bevezetés a programozásba - Az algoritmusok leírása
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Lekérdezések SQL-ben Relációs algebra A SELECT utasítás
ADATBÁZISOK.
Ablak módszer Rózsa Győző
Analitikus függvények
Analitikus, statisztikai és szélsőérték fv-k Hári Veronika
Adatbázisok SQL. TARTALOM Szijártó M.2 Témakörök  Az SQL tulajdonságai  A műveletek fajtái  Objektum-műveletek  Lekérdezések Tulajdonságok és műveletek.
Oracle tuning server.101/b10752/toc.htm.
Oracle SQL Tuning Bevezetés
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
1 Informatikai Szakképzési Portál Adatbázis kezelés DCL – Adatvezérlő nyelv.
Delphi programozás alapjai
– Adattáblák & adatok kezelése – Tarcsi Ádám január Adatbázis gyakorlat.
Többtáblás lekérdezések, allekérdezések Rózsa Győző
1 Végrehajtási terv és TKPROF a hatákonyság növelésére Roger Schrag Database Specialists, Inc.
SQL Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések
Adatbázis alapú rendszerek
Adatbázis rendszerek II.
Adatbázis-kezelés ACCESS program:
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
2006. október 9.Markó Tamás, PTE TTK1 Az Oracle SQL 7. Kényszerek megadása. Indexek kezelése.
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 4. Összesítés és csoportosítás lekérdezésekben. Halmazműveletek.
2005. december 12.Markó Tamás, PTE TTK1 Az Oracle SQL 11. Elemzések támogatása.
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 5. Nézettáblák létrehozása, módosítása és törlése.
SQL92 lehetőségek KL A tábla B tábla C view adatok VIEW működése utasítás: SELECT.. FROM A,B … SELECT.. FROM C Az adatok a hivatkozáskor állítódnak elő.
adminisztrációs feladatok
ADATBÁZISOK
ADATBÁZISOK
ADATBÁZISOK
Részletező csoportosítások Rózsa Győző
Kényszerek megadása. Indexek kezelése.
Nézettáblák létrehozása, módosítása és törlése
SQL.
Nézettáblák, felső-N analízis Március 20. Rózsa Győző.
Anyagadatbank c. tárgy gyakorlat Féléves tematika Adatbázis alapfogalmak, rendszerek Adatmodellek, adatbázis tervezés Adatbázis műveletek.
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
Statisztika, kutatásmódszertan I.
Dr. Krauszné Dr. Princz Mária Adatbázis rendszerek I.
1 Informatikai Szakképzési Portál Adatbázis kezelés Alapfogalmak.
Adatbázis adminisztrátori ismeretek
2012. tavaszi félév Véső Tamás. Kérdezze le minden dolgozó nevét, jövedelmét, részlegének nevét és a részlegében dolgozók legkisebb és legnagyobb jövedelmét,
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
2012. tavaszi félév Véső Tamás Véső Tamás OE­NIK / 29.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
ADATBÁZIS HASZNÁLAT I. 3. gyakorlat. Figyelem!!! A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem.
SQL DDL DATA DEFINITION LANGUAGE. Táblák létrehozása CREATE TABLE táblanév ( oszlopnév1 típus(méret) /DEFAULT érték/ /NOT NULL/, oszlopnév2 típus(méret)
Készítette: Tóth Ervin
APEX BMF, II. félév.
Adatbázis kezelés. Az adatbázis tágabb értelemben egy olyan adathalmaz, amelynek elemei – egy meghatározott tulajdonságuk alapján – összetartozónak tekinthetők.
2006. október 30.Markó Tamás, PTE TTK1 Az Oracle SQL 9. Triggerek és tárolt eljárások. Kliens oldali programok.
Adatbázis kezelés.
ORACLE ORDBMS adminisztrációs feladatok 3. rész dr. Kovács László 2004.
– SQL 3: SELECT - 1. – Tarcsi Ádám, január 31. Adatbázis gyakorlat.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
SQL SELECT parancsok Kottyán László. A bemutató mintatáblái.
Többtáblás lekérdezések, hierarchikus lekérdezések, allekérdezések
Webprogramozó tanfolyam
2. AB gyakorlat Egytáblás csoportosító lekérdezések.
– SELECT - 1. – Tarcsi Ádám január Adatbázis gyakorlat.
Automatikus fizikai tervezési javaslatok XML adatbázisokhoz Balogh Bernadett Kresz Marcell Cseh Tamás.
SQL aggregálás, csoportosítás és összekapcsolás Adatbázisok 1.
Lekérdezések Adott tulajdonságú adatok listázásának módja a lekérdezés. A lekérdezések segítségével az adatbázisból megjeleníthetjük, módosíthatjuk, törölhetjük.
Alkalmazásfejlesztés gyakorlat
Hangyál Zoltán Principal Engineer LogMeIn
Előadás másolata:

2006. december 2.Markó Tamás, PTE TTK1 Az Oracle SQL 15. Hangolás

2006. december 2.Markó Tamás, PTE TTK2 A rádiótelefonokat kérem KIKAPCSOLNI!

2006. november 26.Markó Tamás, PTE TTK3 Olvasnivaló •Gyári dokumentáció: –Oracle 9i Database Performance Planning –Oracle 9i Database Performance Tuning Guide and Reference (1. és 6. fejezet)

2006. december 2.Markó Tamás, PTE TTK4 A hangolás •Ugyanazt az eredményt sokszor több különböző utasítással is el lehet érni •Egy utasítást sokszor több különböző módon is végre lehet hajtani •A lehetőségek közötti választás nagyban befolyásolja a végrehajtási időt •Az (eredmény szempontjából) ekvivalens utasítások közül való választás a mi feladatunk •A végrehajtási lehetőségek közötti választást az Oracle végzi, de mi is beleszólhatunk

2006. december 2.Markó Tamás, PTE TTK5 Az SQL utasítások végrehajtása SQL compiler

2006. december 2.Markó Tamás, PTE TTK6 Az egyes részek feladatai •Elemző (parser): –szintaktikai elemzés –szemantikai ellenőrzés (a hivatkozott objektumok megléte) •Optimalizáló: –meghatározza a végrehajtás leghatékonyabb módját –két fajtája van –a költségalapú optimalizálót (CBO, cost based optimizer) javasolja az Oracle •Sorforrás-generátor (row source generator): –a sorforrás adatsorokat állít elő –az utasítás végrehajtási terve több sorforrást tartalmazhat

2006. december 2.Markó Tamás, PTE TTK7 Az optimalizáló

2006. december 2.Markó Tamás, PTE TTK8 Az optimalizáló munkája •Figyelembe veszi –az utasításban használt objektumok tulajdonságait –az utasításban előírt feltételeket •Az optimalizálás lépései –a konstansokat tartalmazó kifejezések és feltételek minél teljesebb kiértékelése –az utasítás átalakítása más ekvivalens formára (ha kell) –az optimalizálás módjának meghatározása –a táblák elérési módjának meghatározása –a táblák összekapcsolási sorrendjének meghatározása –a táblák összekapcsolási módjának meghatározása

2006. december 2.Markó Tamás, PTE TTK9 Az optimalizáló munkájának befolyásolása •Megszabható az optimalizálás módja –az adatbáziskezelő futó példányának (instance) egészére vonatkozik (OPTIMIZER_MODE inicializáló paraméter) •A költségalapú optimalizálásnál megszabható az optimalizálás célja –az aktuális munkamenetre (session) vonatkozik (OPTIMIZER_GOAL paraméter az ALTER SESSION parancshoz) •Útmutatás (hint) adható az egyes utasítások végrehajtási módjához

2006. december 2.Markó Tamás, PTE TTK10 Az optimalizálás célja •Alapértelmezett: az utasítás leggyorsabb teljes végrehajtása –a batch üzemmódú alkalmazásoknál (pl. jelentések készítése) ez a logikus választás •A másik lehetőség: a leggyorsabb válasz (az első sorok gyors megjelenítése) –interaktív alkalmazásoknál ésszerű

2006. december 2.Markó Tamás, PTE TTK11 Az optimalizálást befolyásoló statisztikai adatok •Az Oracle statisztikákat gyűjt az adatok –változékonyságáról (eloszlásáról) –fizikai tárolásáról •Ezek ismerete nagymértékben javítja a költségalapú optimalizálás hatékonyságát •A lehetőségekre vonatkozóan lásd a DBMS_STATS programcsomagot

2006. december 2.Markó Tamás, PTE TTK12 A táblák elérési módjai 1. •Full table scan –a tábla minden sorát feldolgozza –soros elérés, gyors –minden sort csak egyszer dolgoz fel •Sample table scan –a tábla véletlenszerűen kiválasztott sorait dolgozza fel •Rowid scan –a leggyorsabb mód egy sor eléréséhez

2006. december 2.Markó Tamás, PTE TTK13 A táblák elérési módjai 2. •Index scan –adatelérés az indexelés alapjául szolgáló mezők értéke szerint –nem is olvassa az eredeti táblát, ha az utasításban csak az indexben lévő mezők fordulnak elő –több altípusa van •Cluster scan –egy clusterben tárolt összes sor elérése •Hash cluster scan –hash clusterben tárolt adatok elérésére

2006. december 2.Markó Tamás, PTE TTK14 A táblák összekapcsolási sorrendje •Kettőnél több tábla összekapcsolása esetén érdekes •A rendszer először két táblát kapcsol össze •Ennek eredményét összekapcsolja a harmadikkal •Egyesével kapcsolja hozzá a többi szükséges táblát it

2006. december 2.Markó Tamás, PTE TTK15 A táblák összekapcsolási módjai •Nyolc fajta van, különböző körülmények között hatásosak –nested loop joins –nested loop outer joins –hash joins –hash join outer joins –sort merge joins –sort merge outer joins –cartesian joins –full outer joins

2006. december 2.Markó Tamás, PTE TTK16 Az utasítás végrehajtási terve

2006. december 2.Markó Tamás, PTE TTK17 Az utasítás végrehajtási terve •Execution plan •Az optimalizáló munkájának eredménye •Az egyes utasítások végrehajtási terve lekérdezhető az EXPLAIN PLAN … utasítással

2006. december 2.Markó Tamás, PTE TTK18 Az EXPLAIN PLAN utasítás •Egy SQL utasítás végrehajtási terve kérdezhető le vele •A végrehajtási terv adatait egy előre elkészített táblába teszi •A terv elkészülte után a tábla lekérdezhető •Az utasítás végrehajtásához megfelelő jogosultságok szükségesek •A részleteket lásd a gyári dokumentáció SQL Reference Manual című kötetében

2006. december 2.Markó Tamás, PTE TTK19 Példa az EXPLAIN PLAN használatára EXPLAIN PLAN FOR SELECT ename, job, sal, dname FROM scott.emp, scott.dept WHERE emp.deptno=dept.deptno AND NOT EXISTS (SELECT * FROM scott.salgrade WHERE emp.sal NOT BETWEEN hisal AND lowsal); nincs olyan beosztás, ahol az illető fizetése az előírt határok közé esne

2006. december 2.Markó Tamás, PTE TTK20 Az EXPLAIN PLAN által előállított adatok ID OPERATION OPTIONS OBJECT_NAME SELECT STATEMENT 1 FILTER 2 NESTED LOOPS 3 TABLE ACCESS FULL EMP 4 TABLE ACCESS BY ROWID DEPT 5 INDEX UNIQUE SCAN PK_DEPTNO 6 TABLE ACCESS FULL SALGRADE

2006. december 2.Markó Tamás, PTE TTK21 Az adatok értelmezése 1. ID OPERATION SELECT STATEMENT 1 FILTER 2 NESTED LOOPS 3 TABLE ACCESS 4 TABLE ACCESS 5 INDEX 6 TABLE ACCESS 1 FILTER 2 NESTED LOOPS 6 TABLE ACC. (salgrade, full) 3 TABLE ACC. (emp, full) 4 TABLE ACC. (dept, by rowid) 5 INDEX (pk_deptno, unique scan) fa-szerkezet szintjei minden lépés egy sorforrás

2006. december 2.22 Az adatok értelmezése 2. 1 FILTER 2 NESTED LOOPS 6 TABLE ACC. (salgrade, full) 3 TABLE ACC. (emp, full) 4 TABLE ACC. (dept, by rowid) 5 INDEX (pk_deptno, unique scan) SELECT ename, job, sal, dname FROM scott.emp, scott.dept WHERE emp.deptno=dept.deptno AND NOT EXISTS (SELECT * FROM scott.salgrade WHERE emp.sal NOT BETWEEN hisal AND lowsal); a szürke lépések az előző lépések adatait dolgozzák fel a kék lépések az adatbázisból veszik az adatokat a DEPTNO kulcs, egyedi index van hozzá az index rowid-t ad vissza a legfelső szint a felhasználónak adja az adatokat

2006. december 2.23 A végrehajtási sorrend 1. 1 FILTER 2 NESTED LOOPS 6 TABLE ACC. (salgrade, full) 3 TABLE ACC. (emp, full) 4 TABLE ACC. (dept, by rowid) 5 INDEX (pk_deptno, unique scan) SELECT ename, job, sal, dname FROM scott.emp, scott.dept WHERE emp.deptno=dept.deptno AND NOT EXISTS (SELECT * FROM scott.salgrade WHERE emp.sal NOT BETWEEN hisal AND lowsal); Végigolvassa a teljes EMP táblát. A sorokat egyenként átadja a 2-es lépésnek. (Az összes további lépés az EMP tábla minden sorára külön-külön végrehajtódik)

2006. december 2.24 A végrehajtási sorrend 2. 1 FILTER 2 NESTED LOOPS 6 TABLE ACC. (salgrade, full) 3 TABLE ACC. (emp, full) 4 TABLE ACC. (dept, by rowid) 5 INDEX (pk_deptno, unique scan) SELECT ename, job, sal, dname FROM scott.emp, scott.dept WHERE emp.deptno=dept.deptno AND NOT EXISTS (SELECT * FROM scott.salgrade WHERE emp.sal NOT BETWEEN hisal AND lowsal); A 2-es lépéstől kapott DEPTNO-t megkeresi az indexben és a hozzá tartozó ROWID-t átadja a 4-es lépésnek.

2006. december 2.25 A végrehajtási sorrend 3. 1 FILTER 2 NESTED LOOPS 6 TABLE ACC. (salgrade, full) 3 TABLE ACC. (emp, full) 4 TABLE ACC. (dept, by rowid) 5 INDEX (pk_deptno, unique scan) SELECT ename, job, sal, dname FROM scott.emp, scott.dept WHERE emp.deptno=dept.deptno AND NOT EXISTS (SELECT * FROM scott.salgrade WHERE emp.sal NOT BETWEEN hisal AND lowsal); Az 5-ös lépéstől kapott ROWID alapján megtalálja a részleg adatait és DNAME-et átadja a 2-es lépésnek.

2006. december 2.26 A végrehajtási sorrend 4. 1 FILTER 2 NESTED LOOPS 6 TABLE ACC. (salgrade, full) 3 TABLE ACC. (emp, full) 4 TABLE ACC. (dept, by rowid) 5 INDEX (pk_deptno, unique scan) SELECT ename, job, sal, dname FROM scott.emp, scott.dept WHERE emp.deptno=dept.deptno AND NOT EXISTS (SELECT * FROM scott.salgrade WHERE emp.sal NOT BETWEEN hisal AND lowsal); A 3-as és 4-es lépéstől kapott egy-egy sort egybefűzi, ezzel előáll a fenti SELECT egy lehetséges sora. Ezt átadja az 1-es lépésnek.

2006. december 2.27 A végrehajtási sorrend 5. 1 FILTER 2 NESTED LOOPS 6 TABLE ACC. (salgrade, full) 3 TABLE ACC. (emp, full) 4 TABLE ACC. (dept, by rowid) 5 INDEX (pk_deptno, unique scan) SELECT ename, job, sal, dname FROM scott.emp, scott.dept WHERE emp.deptno=dept.deptno AND NOT EXISTS (SELECT * FROM scott.salgrade WHERE emp.sal NOT BETWEEN hisal AND lowsal); Az 1-es lépéstől kapott EMP.SAL használatával végrehajtja a beágyazott lekérdezést, az összes megfelelő sort visszaadja az 1-es lépésnek.

2006. december 2.28 A végrehajtási sorrend 6. 1 FILTER 2 NESTED LOOPS 6 TABLE ACC. (salgrade, full) 3 TABLE ACC. (emp, full) 4 TABLE ACC. (dept, by rowid) 5 INDEX (pk_deptno, unique scan) SELECT ename, job, sal, dname FROM scott.emp, scott.dept WHERE emp.deptno=dept.deptno AND NOT EXISTS (SELECT * FROM scott.salgrade WHERE emp.sal NOT BETWEEN hisal AND lowsal); Ha a 6-os lépéstől nem kapott adatot, akkor a 2-es lépéstől kapott sort átadja a felhasználónak (egyébként nem).

29 Szempontok a végrehajtásnál •A végrehajtás a fa leveleinél kezdődik •Ha egy szülő-lépés végrehajtható már a gyerek- lépések egy sorával is, akkor végrehajtódik (és az eredményt továbbadja az ő szülőjének •Soronként végrehajtható tipikus műveletek: –tábla elérése –index elérése –szűrés •Csak az összes sor ismeretében végrehajtható lépések: –rendezés –összesítő függvények kiszámítása felhasználó megkaphatja az első sorokat a teljes utasítás végrehajtása előtt is

2006. december 2.Markó Tamás, PTE TTK30 Az SQL utasítások optimalizálása

2006. december 2.Markó Tamás, PTE TTK31 A kritikus utasítások megtalálása adott programban •A statikus SQL utasítások közvetlenül láthatók •A dinamikus (az alkalmazás futási idejében felépített) SQL-ről az SQL_TRACE és a TK_PROF segítségével kaphatunk adatokat

2006. december 2.Markó Tamás, PTE TTK32 A kritikus utasítások megtalálása egy teljes alkalmazásban •A Statspack alkalmazás segítségével adatok gyűjthetők a rendszer teljesítményéről •Az összegyűjtött adatok bizonyos nézettáblákon keresztül érhetők el •Legalapvetőbb a V$SQLAREA –utasításonként adja meg a használt erőforrásokat

2006. december 2.Markó Tamás, PTE TTK33 Hatékonyságjavító intézkedések 1. •Az optimalizáló által használt statisztikai adatok felülvizsgálata –gyűjtsük őket az összes tábláról –legyenek az adatok frissek •Az utasítások végrehajtási tervének elemzése –néha okosabbak lehetünk a rendszernél •Az SQL utasítások átalakítása –tegyük lehetővé, hogy az Oracle használja az indexeket

2006. december 2.Markó Tamás, PTE TTK34 Hatékonyságjavító intézkedések 2. •Minden feladatra külön utasítást írjunk –inkább több egyszerű utasítás, mint egy összetett •Beágyazott SELECT esetében a helyzettől függően válasszunk az IN és az EXISTS között •Adjunk útmutatást (hint) a rendszernek –mi többet tudhatunk az adatbázisról •Óvatosan használjuk a nézettáblákat –nagyon lelassíthatják a lekérdezéseket

2006. december 2.Markó Tamás, PTE TTK35 Hatékonyságjavító intézkedések 3. •Tároljuk a közbülső eredményeket –előnyös, ha többször is felhasználjuk őket •Vizsgáljuk felül az indexeket •Vizsgáljuk felül a triggereket és a kényszereket •Vizsgáljuk felül az adatbázis szerkezetét •Őrizzük meg az utasítások végrehajtási tervét –legközelebb már nem kell előállítani •Lehetőleg csak egyszer érjünk el minden adatot

2006. december 2.Markó Tamás, PTE TTK36 A rendszer működési filozófiája megérthető és kihasználható!