Hogyan mkdik SELECT SUMr dt e r v

  • Slides: 30
Download presentation
Hogyan működik? SELECT SUM(r. d*t. e), r. v FROM rendeles r, termek t WHERE

Hogyan működik? SELECT SUM(r. d*t. e), r. v FROM rendeles r, termek t WHERE r. termek = t. tid AND t. szin = 'PIROS' GROUP BY r. varos DBMS if ( fseek(f, poz) ) { fread(f, buf, BUFSIZE); for (i=0; i<buf->cnt; i++) { pp = buf->base + i*SZ; ….

Data System SQL parancs szematikai ellenőrzés induló QOG algebrai optimalizálás javitott QOG konverizó fizikai

Data System SQL parancs szematikai ellenőrzés induló QOG algebrai optimalizálás javitott QOG konverizó fizikai szintre induló QEP költség optimalizálás javitott QEP végrehajtás Storage System DB

A szavak nyelvtani szerepének meghatározása 1 Dave a take a stress … BCNF

A szavak nyelvtani szerepének meghatározása 1 Dave a take a stress … BCNF

Minta feladat : bináris törtszám -101. 11_ 0 - 1 2 0 3 1

Minta feladat : bináris törtszám -101. 11_ 0 - 1 2 0 3 1 + 1 . _ FGRAF. DBF (k-statusz, esemeny, v-statusz) 0 1 OK _

parameter sor ajel = 0 sh = len(sor) for i = 1 to sh

parameter sor ajel = 0 sh = len(sor) for i = 1 to sh c = substr(sor, i, 1) tb[1] =. f. select vstatusz from fgraf where kstatusz = m. ajel and esemeny == c into array tb if type('tb[1]') <> 'N' messagebox("HIBA") return endif ajel = tb[1] endfor messagebox("OK")

2 Operátorok és operandusok meghatározása o. megy, a. fiz Osztaly () avg()oid SELECT o.

2 Operátorok és operandusok meghatározása o. megy, a. fiz Osztaly () avg()oid SELECT o. megv, a. fiz FROM osztaly o, (SELECT AVG(fiz), oid FROM dolgozok GROUP BY oid) a WHERE o. oid = a. oid AND a. fiz > 50000; o. oid = a. oid AND a. fiz > 50000

3 Végrehajtási sorrend meghatározása ( 3 * (4 + 2) + (2 * 3))

3 Végrehajtási sorrend meghatározása ( 3 * (4 + 2) + (2 * 3)) + 6 + Végrehajtási gráf generálása + * 2 * 3 + 4 6 3 2

Minta : algebrai kifejezés + × 3 2 × + 2 2 4 FA.

Minta : algebrai kifejezés + × 3 2 × + 2 2 4 FA. DBF (id, tipus, ertek, bal, jobb) [1, D, 3, , , ] [3, O, ×, 1, 2] parameter gykod ? ite (gykod) function ite parameter gykod. . .

dimension tb[1] =. f. select * from fa where id = m. gykod into

dimension tb[1] =. f. select * from fa where id = m. gykod into array tb if type("tb[1, 1]") <> "N" messagebox("HIBA") return. f. endif if tb[1, 2] = "O" bert = ite (tb[1, 4]) jert = ite (tb[1, 5]) pa = " ertek = " + bert + " " + tb[1, 3] + " " + jert ? pa &pa return str(ertek) else return tb[1, 3] endif

Induló QOG meghatározása 4 QOG: algebrai műveletek megadása a gráf csomópontjaiban oid, fiz oid=oid

Induló QOG meghatározása 4 QOG: algebrai műveletek megadása a gráf csomópontjaiban oid, fiz oid=oid and fiz > 50000 oidoid, avg(fiz) osztaly o dolgozo d

QOG optimalizálása 5 A QOG optimalizálás alapelvei: - szelekciók felbontása elemi szelekciókra - szelekciók

QOG optimalizálása 5 A QOG optimalizálás alapelvei: - szelekciók felbontása elemi szelekciókra - szelekciók lefelé mozgatása - projekciók lefelé mozgatása - összetartozó elemek összevonása A B

QOG átalakítási szabályok 5 (1) (2) (3) (4) (5) (6) (7) (8) (9) R

QOG átalakítási szabályok 5 (1) (2) (3) (4) (5) (6) (7) (8) (9) R S S R (R S) T R (S T) A ( B(R)) A(R) , ha A B F( G(R)) G( F(R)) F( G(R)) G F(R)) A( G(R)) G( A(R)) , ha G lefedi A-t G(R S) G(R) S , ha G csak A-t érinti A B(R S) A(R) B(S) A( G(R)) A( G( AB(R))) , ha G a B-re vonatkozik

Minta feladat: SELECT A 1, A 2, B 4, C 3 FROM A, B,

Minta feladat: SELECT A 1, A 2, B 4, C 3 FROM A, B, C WHERE A. A 1 = B. B 3 AND B. B 4 = C. C 3 AND A. A 2 = X 1

2 3

2 3

4

4

A logikai terv után meg kell határozni a tényleges adatkezelő lépéseket QEP : Query

A logikai terv után meg kell határozni a tényleges adatkezelő lépéseket QEP : Query Execution Plan QOG QEP nem kölcsönösen egyértelmű kapcsolat

Adatbázis kezelő műveletek optimalizálása A QEP csomópontjaiban már nevesített eljárásokat adunk meg, melyek mögött

Adatbázis kezelő műveletek optimalizálása A QEP csomópontjaiban már nevesített eljárásokat adunk meg, melyek mögött implementált rutinok állnak, melyek meghívhatók, végrehajthatók. A gráf élei irányítottak, s egy A csomópontból akkor mutat él a B csomópontba, ha a B művelet felhasználja az A művelet eredményét. Nested loop eredmény Table access ROWID Optimalizálás: - szabály alapú - költség alapú Index search Table scan A B

SELECT … INTERSECT SELECT. . Alternatívák: - módszerek - csoportosítás - optimalizálás

SELECT … INTERSECT SELECT. . Alternatívák: - módszerek - csoportosítás - optimalizálás

Oracle arany szabályai ROWID cluster join concatenated index column index sub-index table scan

Oracle arany szabályai ROWID cluster join concatenated index column index sub-index table scan

Adatbázis kezelő műveletek optimalizálása Rekord elérési költségek ROWID alapú Clustering index normál index szekvencia

Adatbázis kezelő műveletek optimalizálása Rekord elérési költségek ROWID alapú Clustering index normál index szekvencia egy rekord egy kulcsérték tartomány egy kulcsérték c = 1 c = R/P/I c = R/P/2 c = R/I c = R/2 c > R/P ROWID = rekord pozíciót adja meg file: page: record értéke változhat

JOIN algoritmusok (ekvi-join) Nested loop (N 1×N 2) for x in T 1 {

JOIN algoritmusok (ekvi-join) Nested loop (N 1×N 2) for x in T 1 { for y in T 2 { if (x. id = y. id) {…. }

Sorted Merge join algoritmus A két tábla rekordjait kulcs szerint rendezetten bejárja, s összehasonlítja

Sorted Merge join algoritmus A két tábla rekordjait kulcs szerint rendezetten bejárja, s összehasonlítja az aktuális rekordokat C > = N 1+N 2 + (rendezés) 9 6 3 3 1 6 4 3 2 3 > 2 i 1 = 1; i 2 = 1 Do while i 1 < eof 1 and i 2 < eof 2 if (r 1. id < r 2. id) i 1=i 1+1 endif if (r 1. id > r 2. id) i 2=i 2+1 endif if (r 1. id = r 2. id) is 1 = i 1 do while r 1. id = rs 1. id is 1=is 1+1; is 2 = i 2 do while r 2. id = rs 2. id is 2 = is 2 + 1 enddo. . .

Hash join algoritmus A rekordok blokkokba rendelődnek, s összehasonlítás csak az azonos blokkban lévő

Hash join algoritmus A rekordok blokkokba rendelődnek, s összehasonlítás csak az azonos blokkban lévő rekordok között szükséges C = N 1*N 2/B végrehajtás fázisai: szétosztási illesztési h(x) = x mod 3 9 6 3 3 1 túlcsordulás 6 9 1 2 4 3 3 6 4 3 2 hash tábla

Adatbázis kezelő műveletek optimalizálása Oracle SQL utasítások ALTER SESSION SET OPTIMIZER_GOAL=mód; mód = RULE,

Adatbázis kezelő műveletek optimalizálása Oracle SQL utasítások ALTER SESSION SET OPTIMIZER_GOAL=mód; mód = RULE, FIRST_ROW, ALL_ROWS EXPLAIN PLAN FOR SQL-utasítás EXPLAIN PLAN FOR SELECT nev, rsz, tip FROM auto, ember WHERE auto. tul=ember. id AND auto. szin='KEK'; ID 0 1 2 3 4 PARENTID 0 1 1 3 OPERATION SELECT. . . NESTED LOOP TABLE ACCESS INDEX OPTIONS OBJECT FULL BY ROWID UNIQ. SCAN AUTO EMBER SYS_CO. .

Adatbázis kezelő műveletek optimalizálása A TPC tesztek (benchmark) Független, egységesített hatékonyság és funkció ellenőrző

Adatbázis kezelő műveletek optimalizálása A TPC tesztek (benchmark) Független, egységesített hatékonyság és funkció ellenőrző teszt a különböző jellegű adatbáziskezelő rendszerekhez első általánosabban elfogadott teszt: Debit. Credit, 1985 követelmények: - egzakt művelet specifikáció - rugalmas teljesítmény mérési módszer - a valós környezet teljesebb bevonása - ellenőrizhető eredmények TPC: Transaction Processing Performance Council non-profit szervezet a DBMS teljesítmény tesztek (benchmark) karbantartására és ellenőrzésére , kb 26 rendes tagja van

Adatbázis kezelő műveletek optimalizálása TPC-A teszt egy banki automata nyilvántartást szimulál on-line teszt, 1988

Adatbázis kezelő műveletek optimalizálása TPC-A teszt egy banki automata nyilvántartást szimulál on-line teszt, 1988 tranzakció elemei: számla módosítás, automata módosítás, fiók módosítás, naplózás teljesítés feltétele: a tranzakciók 90% 2 sec-on belül lefut x tps terhelése: x*100000 számla, x*10 automata, x*1 részleg mérik az egy teljesítmény egységre eső beruházási költséget is A 1 A 2

Adatbázis kezelő műveletek optimalizálása A TPC tesztek során ellenőrzik a DBMS működés helyességét is.

Adatbázis kezelő műveletek optimalizálása A TPC tesztek során ellenőrzik a DBMS működés helyességét is. ACID elvek betartása - abortálják a tranzakciókat - a rész és a nagyobb egységek összesítő adatait ellenőrzi - párhuzamosan módosítják ugyanazon számlát - rendszer összeomlások kipróbálása Kb. 330 TPC-A teszteredményt hitelesítettek A teljesítmények 10 tps és 3700 tps között helyezkednek el

Adatbázis kezelő műveletek optimalizálása TPC-C teszt egy rendelés nyilvántartást szimulál OLTP, on-line teszt, 1992

Adatbázis kezelő műveletek optimalizálása TPC-C teszt egy rendelés nyilvántartást szimulál OLTP, on-line teszt, 1992 tranzakció elemei: rendelés, fizetés, készlet nyilvántartása komplex műveletek, teljesítmény egysége: tpm, öt különböző tranzakció fut párhuzamosan 1 tpm-hez 10 raktár, 30000 ügyfél, 100000 termék tartozik Évente kb. 50 új eredmény (10000 -720000 tpm) Gép HP Pro. Liant IBM x. Series Fujitsu PP 200 IBM x. Series IBM e. Server DBMS SQLServer 2000 Symphoware IBM DB 2 Oracle 9 i OS Windows 2000 Sun Solaris Windows 2000 IBM AIX tpm 709220 688228 455818 440816 403255 $/tpm 15 23 29 19 18

Adatbázis kezelő műveletek optimalizálása TPC-H teszt egy rendelés nyilvántartást szimulál OLAP, ad-hoc, on-line teszt,

Adatbázis kezelő műveletek optimalizálása TPC-H teszt egy rendelés nyilvántartást szimulál OLAP, ad-hoc, on-line teszt, 1998 Több különböző elemzési tranzakció: piac kutatás, vevő menedzsment, profit elemzés, … komplex műveletek, teljesítmény egysége: Qph, 22 paraméteres lekérdezés, 8 kapcsolódó tábla minimum 100 GB adatmennyiség 1000 GB-os teszt Gép HP 9000 SUN Fire Teradata DBMS Oracle 9 i Teradata OS HP UX Sun Solaris MP-RAS Qph 25805 18802 18542 $/qph 213 227 638

Adatbázis kezelő műveletek optimalizálása TPC-W teszt egy elektronikus bolt vásárlói felületét szimulálja e-commerce, ad-hoc,

Adatbázis kezelő műveletek optimalizálása TPC-W teszt egy elektronikus bolt vásárlói felületét szimulálja e-commerce, ad-hoc, WEB-es on-line teszt, 1999 Három alap tranzakció: vásárlás, rendelés, kínálat böngészés a WEB-en komplex műveletek, teljesítmény egysége: WIPS 100000 termékre Gép Unisys ES 700 Dell Power. Edge IBM x. Series 430 WEB böngésző DBMS OS Webserver SQLServer 2000 Windows 2000 MS IS SQLServer 2000 Windows 2000 MS IS IBM DB 2 IBM ptx MS IS WEB server API WIPS 10439 9758 7554 $/wips 106 35 137 DBMS