Download - Hogyan működik?
![Page 1: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/1.jpg)
Hogyan működik?
SELECT SUM(r.d*t.e), r.vFROM rendeles r, termek tWHERE 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; ….
![Page 2: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/2.jpg)
Data System
Storage System
szematikai ellenőrzés
induló QOG
algebrai optimalizálás
javitott QOG
konverzió fizikai szintre
induló QEP
költség optimalizálás
javitott QEP
QEP végrehajtás
SQL parancs
DB
![Page 3: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/3.jpg)
1 A szavak nyelvtani szerepének meghatározása
Dave a take a stress …
BCNF
![Page 4: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/4.jpg)
Minta feladat : bináris törtszám -101.11_
0 2 3
OK
-
+
1
0
1
.
_
_
0
1
FGRAF.DBF(k-statusz, esemeny, v-statusz)
1
![Page 5: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/5.jpg)
parameter sorajel = 0sh = 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]endformessagebox("OK")
![Page 6: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/6.jpg)
2 Operátorok és operandusok meghatározása
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.megy, a.fiz Osztaly () avg()avg()oid
o.oid = a.oid AND a.fiz > 50000
![Page 7: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/7.jpg)
3 Végrehajtási sorrend meghatározása
( 3 * (4 + 2) + (2 * 3)) + 6
Végrehajtási gráf generálása +
6+
*
3+
4
*
3 2
2
![Page 8: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/8.jpg)
Minta :algebrai kifejezés
+
× ×
+3 2
2 4
2
FA.DBF(id, tipus, ertek, bal, jobb)
[1,D,3, , , ][3,O,×,1,2]
parameter gykod? ite (gykod)
function iteparameter gykod...
![Page 9: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/9.jpg)
dimension tb[1]tb[1] = .f.select * from fa where id = m.gykod into array tbif type("tb[1,1]") <> "N" messagebox("HIBA") return .f.endifif 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
![Page 10: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/10.jpg)
QOG: algebrai műveletek megadása a gráf csomópontjaiban
osztaly o dolgozo d
oidoid, avg(fiz)
oid=oid and fiz > 50000
oid, fiz
4 Induló QOG meghatározása
![Page 11: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/11.jpg)
5 QOG optimalizálása
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
A B
![Page 12: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/12.jpg)
5 QOG átalakítási szabályok
(1) R S S R(2) (R S) T R (S T)(3) A (B(R)) A(R) , ha A B(4) F(G(R)) G(F(R))(5) F(G(R)) GF(R))(6) A(G(R)) G(A(R)) , ha G lefedi A-t(7) G(R S) G(R) S , ha G csak A-t érinti(8) AB(R S) A(R) B(S)(9) A(G(R)) A(G(AB(R))) , ha G a B-re vonatkozik
![Page 13: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/13.jpg)
Minta feladat:SELECT A1,A2,B4,C3 FROM A,B,C WHERE A.A1 = B.B3 AND B.B4 = C.C3 AND A.A2 = X
A B C
*
*
A.A1=B.B3 AND B.B4=C.C3 AND A.A2=x
A1,A2,B4,C31
![Page 14: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/14.jpg)
A B C
*
*
A.A1=B.B3
A1,A2,B4,C3
A.A2 =x
B.B4=C.C3
A B C
*
*
A.A1=B.B3
A1,A2,B4,C3
A.A2 =x
B.B4=C.C3
2 3
![Page 15: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/15.jpg)
AB C
*
*
A.A1=B.B3
A1,A2,B4
A.A2 =x
B.B4=C.C3
C3
B3, B4
A1,A2
4
![Page 16: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/16.jpg)
A logikai terv után meg kell határozni a tényleges adatkezelő lépéseket QEP : Query Execution Plan
QOGQEP
nem kölcsönösen egyértelmű kapcsolat
![Page 17: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/17.jpg)
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.
A
Index search
Table accessROWID
Nested loop
B
Table scan
eredmény
Optimalizálás:- szabály alapú- költség alapú
![Page 18: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/18.jpg)
SELECT … INTERSECTSELECT ..
Alternatívák:
- módszerek - csoportosítás - optimalizálás
![Page 19: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/19.jpg)
Oracle aranyszabályai
ROWIDcluster joinconcatenated indexcolumn indexsub-indextable scan
![Page 20: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/20.jpg)
Adatbázis kezelő műveletek optimalizálása
Rekord elérési költségekROWID alapú egy rekord c = 1Clustering index egy kulcsérték c = R/P/IClustering index érték tartomány c = R/P/2normál index egy kulcsérték c = R/Inormál index érték tartomány c = R/2szekvencia egy kulcsérték c > R/P
ROWID = rekord pozíciót adja megfile:page:record
értéke változhat
![Page 21: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/21.jpg)
JOIN algoritmusok (ekvi-join)
Nested loop (N1×N2)for x in T1 { for y in T2 { if (x.id = y.id) {….}
![Page 22: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/22.jpg)
A két tábla rekordjait kulcs szerint rendezetten bejárja, s összehasonlítja az aktuális rekordokatC > = N1+N2 + (rendezés)
96331
6423
3 2>
i1 = 1; i2 = 1Do while i1 < eof1 and i2 < eof2 if (r1.id < r2.id) i1=i1+1 endif if (r1.id > r2.id) i2=i2+1 endif if (r1.id = r2.id) is1 = i1 do while r1.id = rs1.id is1=is1+1; is2 = i2 do while r2.id = rs2.id is2 = is2 + 1 enddo enddo...
Sorted Merge join algoritmus
![Page 23: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/23.jpg)
A rekordok blokkokba rendelődnek, s összehasonlítás csak az azonos blokkban lévő rekordok között szükségesC = N1*N2/Bvégrehajtás fázisai:
szétosztásiillesztési
96331
6423
3
h(x) = x mod 3
36
36
9
1 42
hash táblatúlcsordulás
Hash join algoritmus
![Page 24: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/24.jpg)
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, emberWHERE auto.tul=ember.id AND auto.szin='KEK';
ID PARENTID OPERATION OPTIONS OBJECT0 SELECT ...1 0 NESTED LOOP2 1 TABLE ACCESS FULL AUTO3 1 TABLE ACCESS BY ROWID EMBER4 3 INDEX UNIQ. SCAN SYS_CO..
![Page 25: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/25.jpg)
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: DebitCredit, 1985kö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
![Page 26: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/26.jpg)
Adatbázis kezelő műveletek optimalizálása
TPC-A tesztegy banki automata nyilvántartást szimulálon-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 lefutx tps terhelése: x*100000 számla, x*10 automata, x*1 részlegmérik az egy teljesítmény egységre eső beruházási költséget is
A1
A2
![Page 27: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/27.jpg)
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ítettekA teljesítmények 10 tps és 3700 tps között helyezkednek el
![Page 28: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/28.jpg)
Adatbázis kezelő műveletek optimalizálása
TPC-C tesztegy rendelés nyilvántartást szimulálOLTP, 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 DBMS OS tpm $/tpmHP ProLiant SQLServer2000 Windows2000 709220 15IBM xSeries SQLServer2000 Windows2000 688228 23Fujitsu PP200 Symphoware Sun Solaris 455818 29IBM xSeries IBM DB2 Windows2000 440816 19IBM eServer Oracle 9i IBM AIX 403255 18
![Page 29: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/29.jpg)
Adatbázis kezelő műveletek optimalizálása
TPC-H tesztegy rendelés nyilvántartást szimulálOLAP, 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 DBMS OS Qph $/qphHP9000 Oracle 9 HP UX 25805 213SUN Fire Oracle 9i Sun Solaris 18802 227Teradata Teradata MP-RAS 18542 638
![Page 30: Hogyan működik?](https://reader035.vdocuments.pub/reader035/viewer/2022081514/56814b17550346895db82d69/html5/thumbnails/30.jpg)
TPC-W tesztegy elektronikus bolt vásárlói felületét szimuláljae-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ékreGép DBMS OS Webserver WIPS $/wipsUnisys ES700 SQLServer2000 Windows2000 MS IS 10439 106Dell PowerEdge SQLServer2000 Windows2000 MS IS 9758 35IBM xSeries 430 IBM DB2 IBM ptx MS IS 7554 137
Adatbázis kezelő műveletek optimalizálása
WEB server DBMSWEB böngésző API