Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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)

Hasonló előadás


Az előadások a következő témára: "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)"— Előadás másolata:

1 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 cnt;i++) { pp = buf->base + i*SZ; ….

2 Data System Storage System 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 QEP végrehajtás SQL parancs DB

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

4 Minta feladat : bináris törtszám _ 023 OK _ _ 0 1 FGRAF.DBF (k-statusz, esemeny, v-statusz) 1

5 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")

6 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

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

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

9 dimension tb[1] 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

10 QOG : algebrai műveletek megadása a gráf csomópontjaiban osztaly odolgozo d  oid oid, avg(fiz)  oid=oid and fiz >  oid, fiz 4 Induló QOG meghatározása  

11 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   AB   AB 

12 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))   G  F (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)  A  B (R  S)   A (R)   B (S) (9)  A (  G (R))   A (  G (  AB (R))), ha G a B-re vonatkozik

13 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 1

14 2 3

15 4

16 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

17 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 access ROWID Nested loop B Table scan eredmény Optimalizálás: - szabály alapú - költség alapú

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

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

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

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

22 A két tábla rekordjait kulcs szerint rendezetten bejárja, s összehasonlítja az aktuális rekordokat C > = N1+N2 + (rendezés) > i1 = 1; i2 = 1 Do 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... Sorted Merge join algoritmus

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

24 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'; IDPARENTIDOPERATIONOPTIONSOBJECT 0SELECT... 10NESTED LOOP 21TABLE ACCESSFULLAUTO 31TABLE ACCESSBY ROWIDEMBER 43INDEXUNIQ. SCANSYS_CO..

25 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, 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

26 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* 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 A1 A2

27 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

28 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, ügyfél, termék tartozik Évente kb. 50 új eredmény ( tpm) Gép DBMS OS tpm $/tpm HP ProLiantSQLServer2000 Windows IBM xSeriesSQLServer2000Windows Fujitsu PP200SymphowareSun Solaris IBM xSeriesIBM DB2Windows IBM eServerOracle 9iIBM AIX

29 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épDBMSOSQph$/qph HP9000 Oracle 9 HP UX SUN FireOracle 9iSun Solaris TeradataTeradataMP-RAS

30 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 termékre GépDBMSOS WebserverWIPS$/wips Unisys ES700SQLServer2000 Windows2000 MS IS Dell PowerEdgeSQLServer2000Windows2000MS IS IBM xSeries 430IBM DB2IBM ptxMS IS Adatbázis kezelő műveletek optimalizálása WEB server DBMS WEB böngésző API


Letölteni ppt "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)"

Hasonló előadás


Google Hirdetések