Phan Tich Va Toi Uu Hoa Cau Lenh SQL Tren He CSDL ORACLE

Embed Size (px)

DESCRIPTION

Toi uu hoa cau lenh SQL

Citation preview

Lun vn tt nghip: Phn tch v ti u ho cu lnh SQL

Mc lc

1

Mc lc

Li gii thiu3

Chng I: H CSDL quan h v ngn ng hi c cu trc sql5

A - H CSDL quan h5

1. Quan h v cc php ton i s quan h5

2. C s d liu7

3. M hnh CSDL quan h8

4. H qun tr CSDL 8

5. H tin ph thuc hm8

6. Cc dng chun trong CSDL quan h10

B. Gii thiu v Ngn ng hi c cu trc SQL12

1. Khi nim v ngn ng SQL12

2. Cc c im ca ngn ng SQL12

3. Cc loi cu lnh SQL thao tc vi d liu

cn quan tm khi ti u13

Chng II: CSDL phn tn theo m hnh Client - Server ca Oracle15

A. Khi nim v CSDL phn tn15

B. M hnh x l Client-Server16

C. H qun tr CSDL Oracle18

Chng III: Phng php ti u ho trong H CSDL Oracle23

A. Cc khi nim cn bit ti u ho23

1. Khi nim v ti u ho23

2. Chin lc ti u trn cc trn cc biu thc quan h24

3. Cc kiu phn lp trong CSDL Oracle25

4. Cc kiu kt ni trong Oracle28

5. Cc phng thc truy nhp d liu30

6. Cc lut ti u37

B. Phn tch cch thi hnh cu lnh SQL41

C. Cc bc ti u ho43

1. nh gi biu thc hoc iu kin44

2. Chuyn dng cu lnh47

3. Ti u ho cu lnh truy nhp trn VIEW49

4. Chn lut ti u ho51

5. Chn phng thc truy nhp ti hng52

6. Chn thao tc kt ni52

D. Kt lun v phng php ti u trong Oracle54

1. Ti u bng vic thay i cc thc th54

2. Ti u cc Table space56

3. Ti u vng nh h thng SGA57

4. Ti u ho s dng Index59

5. Ti u bng thay i cu lnh SQL60

6. Thm cc ch th thc hin vo trong cu lnh60

Chng IV: Gii thiu v ti u ha cu lnh SQL trong

h tnh ho n v qun l khch hng cng ty cp nc TP HCM65

A. Gii thiu v h chng trnh Tnh ho n v qun l khch hng65

1. t vn 65

2. Phn tch bi ton66

3. Gii quyt bi ton73

B. Cch thc tm ra nhng lnh cn ti u trong phn mm74

C. Thc hin ti u phn mm Qun l ho n nc75

1. Ti u bng s dng Index75

2. Ti u bng thm ch th thc hin v thay i cu lnh SQL79

Kt lun81

Ti liu tham kho83

Ph lc84

Ph lc A: Cc lnh phn tch i tng v phn tch cu lnh84

Ph lc B: Ti u cu lnh trn view

Trong phn mm tra cu vn bn php qui85

Ph lc C: gii thiu qu trnh ti u cu lnh kt ni

trong phn mm tra cu vn bn php qui.92

Ph lc D: Ti u ho bng s dng Index kt hp vi Hint Text

rong phn mm Tra cu Vn bn Php qui95

Li gii thiu

Trong tnh hnh hin nay cc doanh nghip c nhiu chi nhnh t nhiu ni vi khi lng d liu ln, a ngi dng, thng s dng c s d liu phn tn. Do cc phn mm my tnh h tr nghip v kinh doanh ca cc doanh nghip cng phi c t chc v s dng h phn tn mt cch hp l.

Tuy nhin tc x l ca cc phn mm qun l c khi lng d liu ln nm phn tn s tr nn v cng chm, khng p ng c cc yu cu ca ngi s dng. iu ny i hi cc nh pht trin phn mm khng nhng phi xy dng c nhng phn mm ln, a ngi dng m cn phi khng ngng nghin cu v a ra cc gii php ti u ho cu lnh, nhm tng bc nng cao tc x l v gim gi thnh ca phn mm.

Qua tm hiu v nghin cu qu trnh xy dng mt s phn mm ln Vit Nam th qu trnh ti u ho cu lnh ca cc H chng trnh rt c ngha v kinh ph u t ca cc doanh nghip cho cc thit b phn cng bc u cn rt hn ch. Cho nn gii php ti u ho n tng cu lnh cng tr nn quan trng hn trong vic m bo s tn ti v pht trin ca phn mm. iu ny lun lun c ngha ln ngay c khi cc yu cu v phn cng c p ng v ch cn mt cu lnh khng c ti u s lm tng thi gian chy rt nh nhng khi trong h chng trnh ln, a ngi dng th cu lnh c th c thc hin lp li nhiu ln v thi gian tng ng chung ca c h thng s tng ln rt nhiu.

Trong qu trnh ti u i vi mt phn mm, vn t ra l lm sao c th ci thin hiu sut ca phn mm trong iu kin hin c v thi gian thc thi khng tng ln qu nhanh khi d liu tng ln nhiu (c th t hng chc ngn n hng triu bn ghi).

ti ca lun vn l Phn tch v ti u ho cu lnh SQL trn H CSDL ORACLE

Lun vn bao gm nhng ni dung chnh nh sau:

1. H CSDL v ngn ng SQL.

2. Kin trc CSDL Oracle.

3. Tm hiu qu trnh thc hin cu lnh SQL v a ra mt s nguyn nhn lm cu lnh thc hin km hiu qu.

4. Cc phng php ti u ho cu lnh SQL trn CSDL Oracle.

5. Thc hin ti u trn H tnh ho n v qun l khch hng ca cng ty cp nc TP HCM, H tra cu Vn bn php qui trn Web.

Trng tm ca lun vn l xut ci tin cc phng php ti u ho cu lnh SQL v cc cy phn tch cu lnh SQL nhm a ra cc ch mc (Index) thch hp, tc ng n qu trnh thc hin lnh lm tng tc chng trnh.

Bc u nhng ci tin m lun vn xut thu c nhng kt qu ng khch l nh tng tc thc hin ln khong ba ln vi phn mm Tnh ho n v tng ln hng chc ln i vi phn mm tra cu Vn bn php qui. Hn th nhng kt qu nghin cu ca lun vn v phng php ti u c th d dng p dng cho cc phn mm CSDL khc.

Cui cng em chn thnh cm n s h tr v hng dn tn tnh ca thy gio H Quang Thy, thy Trn Xun Thun, anh L Huy, anh V Mnh Cng, ch Hong A Na cng ton th cc thy gio, c gio khoa Cng Ngh Thng Tin, cc anh ch nhn vin Cng ty CSE v cc bn gip em rt nhiu trong qu trnh thc tp, nghin cu v ti v hon thnh lun vn ny.

H Ni - 1998

Chng I H c s d liu quan h v ngn ng hi c cu trc sql

A - H c s d liu quan h

1. Quan h v cc php ton i s quan h

1.1. Quan h

Quan h l mt tp con ca tch -cc ca mt hoc nhiu min. Nh vy mt quan h c th l v hn. y lun lun gi thit rng quan h l mt tp hu hn. Mi hng ca mt quan h gi l mt b, khi quan h l tp con ca tch -cc D1(D2(D3(...(Dn l quan h n ngi. Mi b ca quan h c n thnh phn (thng hiu l n ct). Cc ct ca quan h gi l cc thuc tnh. C th nh ngha quan h theo cch hnh thc nh sau: Gi R=(A1, A2, ..., An( l tp hu hn cc thuc tnh, mi thuc tnh Ai vi i=1, 2, ..., n c min gi tr tng ng l dom(Ai). Quan h trn tp thuc tnh R=( A1, A2, ..., An( l tp con ca tch -cc, r ( dom(A1) ( dom(A2) (...( dom(An). Khi k hiu r(R) hoc r(A1, A2, ..., An) l quan h.

1.2. Kho ca lc quan h

Kho (Key) ca quan h r trn tp thuc tnh R={A1, ...An} l tp con K(R sao cho bt k hai b khc nhau t1, t2 ( r lun tho t1(K)(t2(K).

iu ny c ngha l lc quan h khng c hai b ging nhau trn mi thuc tnh ca R.

1.3. Cc php ton i s quan h

Gi r v s l quan h trn tp thuc tnh R={A1, A2,...,An} v R1={B1,B2,...,Bn}.

Gi thit rng quan h r, s l tp hu hn cc b. i vi cc php hp, giao v tr, hai quan h tham gia phi l kh hp.

Hp ca hai quan h

K hiu hp ca hai quan h r v s l r ( s.

Biu din hnh thc c dng: r ( s ={t/t(s hoc t(r hoc t(r v s}

Php giaoK hiu giao ca hai quan h r v s l r ( s.

Biu din hnh thc c dng: r ( s ={t/t(r v s}

Php tr K hiu r-s l tp cc b thuc r nhng khng thuc s. Biu din hnh thc c dng: r-s={t/t ( r v t (s}.

Tch -cc trn cc quan hTch -cc ca r v s l tp (n*m) b vi n thnh phn u c dng mt b thuc r v m thnh phn sau c dng ca mt b thuc s. Biu din hnh thc c dng:

r ( s={t/t c dng (a1,a2,...,an,b1,b2,...,bn) trong (a1,a2,...,an ( r ) v (b1,b2,...,bn ( s)}

Php chiuGi t l mt b thuc r, A( R, t[A] l gi tr ca b ti thuc tnh A, X ( R. Vi X={B1,B2,...,Bn} th t[X]=(t[B1],t[B2],...,t[Bn]). Php chiu trn tp X ca quan h r k hiu l r[X] c nh ngha nh sau:

r[X]={t[X]/t ( r}.

Thc cht ca php chiu l loi b i mt s thuc tnh v gi li nhng thuc tnh cn li ca quan h

Php chnGi s F c din t bng mt t hp Boolean ca cc ton hng, mi ton hng l mt php so snh n gin gia hai bin l hai thuc tnh, hoc mt bn l thuc tnh mt bn l hng, cho gi tr "ng" hoc "sai" i vi mi b cho khi kim tra ring trn b y.

Trong F c cc php ton so snh l {, >=, =, >, [=] AND [=]

2000;

V d trong trng hp Index trn nhiu trng:

Gi s c Index trn MHon v DngHon ca bng NiDungHon.

SELECT * FROM NiDungHon WHERE MHon > 65118968;

Do MHon l phn ng trc trong Index nhiu ct nn phng thc truy nhp ny c s dng. Tuy nhin cu lnh sau y v DngHon l thnh phn ng sau trong Index nhiu ct nn phng thc truy nhp ny khng c s dng.

SELECT * FROM NiDungHon WHERE DngHon

>=

2000 bng cu lnh sau:

SELECT MNhnVin FROM NhnVin WHERE TnNhnVin='CHUNG' AND Lng>2000;

Da vo cc iu kin trong mnh WHERE ca cu lnh SQL v cc rng buc, cc Index th cc phng truy nhp sau c th dng c:

+ Chn ra mt hng bng Index khi s dng TENNHANVIEN_IND do iu kin TnNhnVin='CHUNG'. Phng thc ny c s th t l 9.

+ Duyt Index khng b gii hn khi s dng LUONG_IND. Phng thc ny c s th t l 11.

+ Duyt ton b do phng thc ny sn dng cho mi bng.

Theo lut ti u Rule-based th Oracle s tin hnh truy nhp theo phng php s dng Index TENNHANVIEN_IND.

6.2. Lut ti u c lng gi (Cost-based)

Mi cch truy nhp khi thi hnh s tng ng mt phn tch c gi (cost) no , gi ny xc nh da trn ti nguyn my tnh nh truy xut I/O, thi gian CPU, b nh ...

Ni dung c bn ca lut ny l chn ra cch thc hin cu lnh m phi tr gi t nht da trn cc thng tin v trng thi ca h thng v ca d liu. Cc thng tin v trng thi c th tm thy trong t in d liu v thng s quan tm n cc thng tin sau:

ln ca quan h R: UR.

S lng gi tr thuc tnh A trong quan h R: U(A,R).

S lng cc trang b nh cha quan h R cn ri: PR.

S lng dng (row) tng ng vi mt trang 1 trang: bR.

S lng cc trang b nh RAM vt l cn ri: M

Mc Index thuc tnh trong quan h R, i vi CSDL Oracle l B-Tree

Trc tin Oracle s xc nh cch thc truy nhp no c th dng c bng cch kim tra iu kin trong mnh WHERE. Tip Oracle s nh gi mi cch truy nhp da trn c im ca d liu nh trng thi Storage, cc Table, cc Index, Cluster trong t in d liu (Data Dictionary).

B ti u ho cng quan tm n cc nhn t sau y khi chn phng thc truy nhp:

Tnh chn lc: l s phn trm cc hng c chn ra trong bng bi cu lnh. Nu nh cu lnh chn ra mt s phn trm nh ca bng th c gi l tnh chn lc cao, cn nu cu lnh chn ra mt s lng hng ln t bng th c gi l tnh chn lc thp.

Oracle thng chn ra c cch truy nhp chnh xc cho cc cu lnh c tnh chn lc cao hn l nhng cu lnh c tnh chn lc thp. Thng thng th nhng cch truy nhp thng qua Index l nhanh i vi cc cu lnh c tnh chn lc cao, tuy nhin phng thc duyt ton b li thc hin nhanh hn i vi cu lnh c tnh chn lc thp.

Tnh chn lc ca mt cu lnh c xc nh thng qua cc iu kin sau:

Cc ton t c s dng trong mnh WHERE Kho duy nht hoc kho chnh c s dng trong mnh WHERE Trng thi ca cc bng

Nhng v d trong phn minh ho s lm r cch thc s dng tnh chn lc.

Tham s DB_FILE_MULTIBLOCK_READ_COUNT: Duyt ton b thng s dng c a khi (multi-block), v vy gi phi tr vi duyt ton b l s lng ca a khi cn c, i hi c ton b bng tc l s cc khi n c tng ng vi mt a khi m gi tr ny c xc nh bi tham s DB_FILE_MULTIBLOCK_READ_COUNT. V l do nn Oracle thng chn duyt ton b khi m gi tr ca tham s ny cao.

VD: Cu lnh sau s dng iu kin bng trong mnh WHERE chn ra tt c nhng nhn vin c tn l Chung:

SELECT * FROM NhnVin WHERE TnNhnVin='Chung';

Nu TnNhnVin l mt kho duy nht hay l mt kho chnh th Oracle s xc nh c ch c mt hng c TnNhnVin l Chung v cu lnh cng ch tr li c mt hng do Oracle rt chnh xc khi chn phng thc truy nhp duyt gi tr duy nht trn Index rng buc bi kho duy nht hay kho chnh (phng thc ny c s th t trong bng l 4).

Quay tr li v d trn, nu nh TnNhnVin khng phi l mt kho duy nht hay l mt kho chnh th Oracle c th nh gi tnh chn lc ca cu lnh da trn thng tin t:

Tham s USER_TAB_COLUMNS.NUM_DISTINCT: S lng tp gi tr khc nhau cho mi ct.

Tham s USER_TABLES.NUM_ROWS: S lng ct trong mi bng.

Bng cch chia s lng hng ca bng NhnVin cho s lng cc gi tr khc nhau ca ct TnNhnVin, Oracle s c lng c s nhn vin cng tn. Vi gi thit cc gi tr ca tn nhn vin l ng u nn Oracle s dng s phn trm ny xc nh tnh chn lc ca cu lnh.

V d 1: SELECT * FROM NhnVin WHERE MNhnVin < 7500;

nh gi tnh chn lc ca cu lnh, Oracle ly gi tr gii hn l 7500 t cu lnh kt hp vi gi tr HIGH_VALUE v LOW_VALUE ng vi ct MNhnVin trong USER_TAB_COLUMNS View. Oracle gi s rng mi gi tr ca MNhnVin c phn b u gia gi tr cao nht v gi tr thp nht do s c lng c s phn trm hng c ly ra (cng nh nh gi c tnh chn lc ca cu lnh).

V d 2: SELECT * FROM NhnVin WHERE MNhnVin < :e1;

B ti u ho khng bit gi tr ca bin cc b e1. Thc t th gi tr ca e1 c th khc nhau vi mi ln thc hin cu lnh. Chnh v l do ny m Oracle c th s dng cch thc m t v d trn xc nh tnh chn lc ca cu lnh. Trong trng hp ny Oracle a ra phng on l gi ct nhn gi tr nh xc nh tnh chn lc (bi v ct c Index).

SELECT * FROM NhnVin WHERE MNhnVin>=7500 AND MNhnVin=7500 c tnh chn lc l S1

MNhnVin2000$ trong bng NhnVin, c th thc hin mt trong ba cu lnh sau:

SELECT TnNhnVin, Lng FROM NhnVin WHERE Lng>20,000/10;

SELECT TnNhnVin, Lng FROM NhnVin WHERE Lng>2,000;

SELECT TnNhnVin, Lng FROM NhnVin WHERE Lng*10>20,000;

R rng c ba cu lnh u tr li cng mt kt qu tuy nhin cu lnh th nht v th ba phi thm mt php tnh ng vi mi php so snh so vi cu lnh th hai. Oracle s t ng chuyn cu lnh th nht tr thnh cu lnh th hai cn cu lnh th ba th khng n gin i vi Oracle thnh cu lnh th hai. Chnh v l do ny m nhng ngi pht trin phn mm nn t chuyn iu kin so snh thnh dng mt ct vi mt hng s trong bt k trng hp no c th hn l mt iu kin trong c cha mt biu thc vi mt ct.

1.2. Ton t LIKEOracle s chuyn cc iu kin n gin s dng ton t so snh LIKE khng s dng k t i din thnh mt biu thc so snh bng. V d, Oracle s chuyn biu thc th nht thnh biu thc th hai:

Chuyn biu thc: TnNhnVin LIKE 'SMITH'

thnh biu thc tng ng: TnNhnVin = 'SMITH'

Cc biu thc kiu ny ch c chuyn khi m biu thc so snh vi cc bin c kch thc (size) khng c nh. Nu nh TnNhnVin c kiu CHAR(10) th biu thc trn khng c chuyn v TnNhnVin c kch thc c nh.

1.3. Ton t INOracle s chuyn cc biu thc c cha ton t so snh IN thnh cc iu kin so snh bng lin kt vi nhau bi ton t logic OR.

V d:

Chuyn biu thc: TnNhnVin IN ('SMITH','KING','JONES')

thnh: TnNhnVin='SMITH' OR TnNhnVin='KING' OR TnNhnVin='JONES'

1.4. Ton t ANY hoc SOMECc biu thc iu kin s c chuyn thnh cc iu kin so snh lin kt vi nhau bi ton t OR. Cc iu kin s dng ANY hoc SOME km theo mt subquery s chuyn thnh ton t EXITST v mt query lin quan.

V d:

Chuyn biu thc: Lng> ANY (:Lng1, :Lng2)

thnh biu thc: Lng>:Lng1 OR Lng>:Lng2

v chuyn: x> ANY (SELECT Lng FROM NhnVin WHERE Ngh='Phn tch vin')

thnh biu thc tng ng l:

EXITST (SELECT Lng FROM NhnVin WHERE Ngh='Phn tch vin' and x>Lng)1.5. Ton t ALLOracle s chuyn cc iu kin s dng ton t ALL thnh cc iu kin so snh bng lin kt vi nhau qua ton t AND. Nu iu kin km theo subquery th s chuyn thnh subquery vo trong mt iu kin m s dng ton t ANY v mt query c bn.

V d: Lng>ALL(:Lng1, :Lng2)

thnhLng> :Lng1 AND Lng > :Lng2

Tx>ALL ( SELECT Lng FROM NhnVin WHERE MPhng=10;

thnh NOT (x7800 t VIEW Phng10 bng cu lnh:

SELECT MNhnVin FROM Phng10 WHERE MNhnVin>7800;

th cu lnh mi s l:

SELECT MNhnVin FROM NhnVin WHERE MPhng=10 AND MNhnVin>7800;

Nu c Index trn ct MPhng v MNhnVin th cu lnh mi s lm cho phng thc truy nhp bng Index sn dng.

3.2. Kt hp cu lnh vo trong View sau ti u cu lnh mi ny

Khi View c cha cc ton t tp hp (UNION, UNION ALL, INTERSECT, MINUS), mnh GROUP BY, mnh CONNECT BY, ton t DISTINCT, cc hm thao tc trn nhiu hng (AVG, COUNT, MAX, MIN, SUM) th khng th kt hp View vo trong cu lnh m c th cu lnh s c kt hp vo trong View.

V d:

CREATE VIEW NVPhng AS SELECT MNhnVin, Avg(Lng) LngTB, MIN(Lng) MinLng, MAX(Lng) MaxLng FROM NhnVin GROUP BY MPhng;

v cu lnh sau s chn cc gi tr trung bnh, MIN, MAX ca lng ca phng 10 t View NVPhng;

SELECT * FROM NVPhng WHERE MPhng=10;

Cu lnh s c kt hp vo VIEW nh sau:

SELECT MNhnVin, AVG(Lng) LngTB, MIN(Lng) MinLng, MAX(Lng) MaxLng FROM NhnVin WHERE MPhng=10 GROUP BY MPhng;

V d cu lnh:

SELECT AVG(LngTB), AVG(MinLng), AVG(MaxLng)

FROM NVPhng;

s c cu lnh kt qu l:

SELECT AVG(AVG(Lng)), AVG(AVG(Lng)), AVG(MAX(Lng))

FROM NhnVin

GROUP BY MPhng;

3.3. Ti u cc cu lnh khc truy nhp trn View

Khng phi l tt c cc cu lnh u c th kt hp gia View v cu lnh. thc hin nhng cu lnh kiu ny, Oracle thc hin View lc ra mt tp cc hng, sau thc cu lnh trn View nh i vi mt hng.

V d to VIEW bng cu lnh:

CREATE VIEW NVPhng AS SELECT MNhnVin, Avg(Lng) LngTB, MIN(Lng) MinLng, MAX(Lng) MaxLng FROM NhnVin GROUP BY MPhng;

v cu lnh truy xut trn View khng th chuyn c l:

SELECT NVPhng.MPhng, LngTB, MinLng, MaxLng, TnPhng FROM NVPhng, NhnVin WHERE NVPhng.MPhng=Phng.TnPhng;4. Chn lut ti u ho

Cch thc v mc tiu ti u ho ca Oracle chu nh hng ca nhng tham s sau:

Tham s khi ci t: OPTIMIZER_MODE.

Trng thi ca t in d liu.

Tham s OPTIMIZER_GOAL ca lnh ALTER SESSION, tham s ny s xc lp ln s xc lp ca tham s khi ci t OPTIMIZER_MODE. Cc cu lnh khc.

Tham s OPTIMIZER_MODE v OPTIMIZER_GOAL c th c cc gi tr sau y:

y l tham s ngm nh cho cch thc ti u ho ca mt th hin. Tham s ny c th c cc gi tr sau:

CHOOSE: y l gi tr ngm nh cho tham s ny xc nh vic chn cch thc ti u rule-based hay cost-based. Nu nh trong t in d liu c cha thng tin trng thi t nht l mt bng th phng thc cost-based s c la chn v c th nhn c cch thc thi hnh cu lnh tt nht. Nu nh trong t in d liu khng c mt thng tin g v trng thi cc bng th cch thc ti u rule-based s c chn.

RULE: gi tr s lm cho Oracle tin hnh ti u tt c cc cu lnh SQL da vo phng thc rule-based bt chp c thng tin trng thi v cc bng trong t in d liu.

ALL_ROWS: phng thc ti u cost-based s c thc hin cho tt c cc cu lnh SQL bt k thng tin trng thi trong t in d liu sao cho ngun ti nguyn s dng l ti thiu hon thnh cu lnh.

FIRST_ROW: Phng thc ti u cost-based c s dng cho tt c cc cu lnh SQL sao cho thi gian p ng l nh nht (ngun ti nguyn s dng tr li hng u tin trong kt qu l ti thiu). Ch rng PL/SQL s b qua tham s OPTIMIZED_MODE v FIRST_ROW khi ci t.

Nu nh s dng phng thc ti u c lng gi m khng c thng tin trng thi v mt vi bng th Oracle s s dng thng tin ni b nh l s khi d liu truy nhp cc bng.

5. Chn phng thc truy nhp ti hng

Mt trong cc iu quan trng nht trong vic ti u mt cy phn tch lnh l lm nh th no c th nhn c d liu t CSDL. Khi bt k cu lnh SQL no truy nhp n bt k hng ca bng trong CSDL th c th c nhiu phng thc truy nhp tm kim v ly ra hng . Oracle s tin hnh chn ra mt phng thc truy nhp m n cho rng ti u nht tu theo vic p dng lut ti u c bn hay lut ti u c lng gi.

6. Chn thao tc kt ni

kt ni hai ngun d liu bt k, Oracle s phi thc hin mt trong cc thao tc kt ni Nested-Loop, Kt ni bng sp xp trn (Sort-Merge), kt ni bng s dng Cluster, kt ni bng s dng hm bm (Hash Join)

6.1. Chn cch thc hin kt ni vi lut rule-based

Vi mt cu lnh kt ni trn quan h R, Oracle s to ra mt tp hp ca th t kt ni R theo thut ton sau:

Vi mi v tr trong th t kt ni, Oracle s chn ra bng c cch truy nhp tt nht v c nh vy cho cc v tr tip theo.

Vi mi bng trong th t kt ni, Oracle cng tin hnh chn ra thao tc kt ni vi bng (hoc ngun d liu) ng trc. Thao tc kt ni bng sp xp trn (Merge-sort) c s dng lm chun (c th t 12) cho cc cc qui tc tip theo.

Nu c cch truy nhp l nh hn 12 th Oracle s s dng Nested-Loop vi bng (hoc ngun d liu) ng trc lm bng ngoi.

Nu cch truy nhp ln hn 12 th Oracle s chn kt ni theo phng php trn vi hai bng.

Nu cch truy nhp nh hn 12 v khng phi l kt ni bng th Oracle s chn thao tc Nested-Loop vi bng trc nh l bng ngoi.

Oracle s chn s thao tc kt ni Nested-Loop l ti a nu bng ni c truy nhp bng Index v do vy vic truy nhp bng ni nhiu ln s t hiu qu hn. Thng thng th th t cc bng trong kt ni s khng ging nh th t xut hin trong mnh FROM. Th t xut hin cc bng s theo cc qui tc sau:

+Oracle s chn cch thi hnh c thao tc Nested-Loop l ti thiu nu nh bng ni phi duyt ton b.

+Nu iu vn cn cha hiu qu th Oracle s tin hnh chn cch thc hin vi theo tc sp xp trn l ti thiu.

+Nu vn cn cha hiu qu th Oracle s chn cch thc hin m bng u tin trong th t kt ni l c cch truy nhp tt nht.

Oracle s chn bng u tin m c truy nhp bng Index ct n v s kt ni theo kiu sp xp trn vi cc bng khc.

Nu khng c th Oracle s chn bng u tin m truy nhp theo phng php duyt c gii hn v s ct nm trong phn u Index l ti a.

+Nu vn cha hiu qu th Oracle s chn bng xut hin sau cng trong mnh FROM.

6.2. Chn cch thc hin kt ni vi lut ti u Cost-based

Oracle s to ra mt tp hp cc cch thc hin da trn cc th t kt ni c th, thao tc kt ni v cc cch truy nhp ti bng. Oracle cng s nh gi cho mi cch thc hin v s chn ra cch no c gi phi tr l ti thiu. nh gi mt biu thc Oracle s da trn cc thng tin sau:

Gi ca mt thao tc Nested-Loop l gi ca vic c mi hng c chn ra t bng ngoi v mi trng hp so khp ca bng ni c np vo b nh. Oracle s nh ra gi ny ng vi thng tin trng thi trong t in d liu.

Gi ca mt thao tc kt ni bng sp xp trn phn ln da trn gi c tt c cc ngun d liu vo b nh v sp xp chng.

Oracle cng nh gi ca mt kt ni theo sp xp trn da vo cc yu t khc. V d nh:

- Mt vng nh sp xp c kch thc nh s lm tng gi phi tr cho kt ni sp xp bi v lc vic sp xp s cn nhiu thi gian ca CPU hn v ln truy xut (I/O) hn. Kch thc ca vng b nh sp xp xc nh bi tham s SORT_AREA_SIZE.

- Vic c mt a khi ln s lm gim gi ca thao tc kt ni bng sp xp trn trong mt quan h so vi mt kt ni Nested-Loop. Nu s lng kh c ng thi trong mt ln truy xut a(I/O) l ln th mt truy nhp qua Index ca bng ni s km hiu qu hn so vi duyt ton b. S ln c a khi c bit qua tham s DB_FILE_MULTIBLOCK_READ_COUNT.

- Vi mt kt ni ngoi th bng trong kt ni ngoi phi i sau nhng bng khc trong th t iu kin ca kt ni. Oracle s sp xp li nhng th t kt ni vi phm iu kin ny.

D. Kt lun v phng php ti u trong Oracle

Sau khi tm hiu cch thc hin cu lnh vi cc trng thi ca d liu c th rt ra cc cch thc cho cu lnh c thc hin mt cch ti u nh sau:

1. Ti u bng vic thay i cc thc th

Bc ny c thc hin trong giai on thit k phn mm v vic thay i cc thc th ch c s dng trong cc trng hp c bit khi vic thit k cc bng dn n cu lnh thc hin trn phi s dng n nhiu bng trung gian.

Bng vic thm vo mt thuc tnh t bng th n vo bng th nht c th to ra mt lin kt trc tip gia bng 1 v bng n m khng cn phi truy xut cc bng trung gian. Khi thay i li cu trc cc bng th s ph v dng chun d liu 3NF nhng cu lnh truy xut trn cc bng s nhanh hn. Do thao tc cu trc li cc bng i hi ngi thit k phi nm vng cc qui tc v nghip v cng nh phi lng trc c cc vn ny sinh trong cc thao tc cp nht d liu.

V d:

bit c khch hng thuc chi nhnh no ca cng ty c hai cch thc hin nh sau:

Cch 1: Phi thc hin kt ni cc bng CUSTOMERS (khch hng), STREETS (ng, ph), WARDS (phng), SUBAREA (tiu khu), DISTRICTS (qun), BRANCH (chi nhnh) sau thc hin php chiu trn ct BRANCH.name.

Cch 2: Thm ct branch_code vo bng CUSTOMERS. Ch cn thc hin kt ni gia hai bng CUSTOMERS v BRANCH sau chiu trn ct BRANCH.name.

2. Ti u cc Table space

Bc ny c thc hin trong qu trnh to thit k phn mm. L do s dng vic phn b cc thc th vo cc Table l CSDL trong Oracle c to nn t cc Tablespace, bng vic sp xp cc bng trong cc Tablespace hp l cng c th tng ng k tc thc hin cu lnh. Vi cc bng t cp nht d liu th nn trong mt Tablespace (nh bng cha thng tin v khch hng) v cc bng hay cp nht vo cc Tablespace khc (nh bng ho n xut kho). Mt khc cc Tablespace c th t trn cc a khc nhau do vy vic truy xut n cc Tablespace c th thc hin mt cch ng thi (do I/O khng cn s iu khin ca CPU). Oracle khuyn co nn to mt Tablespace ch cha cc Index v tt nht l t trn mt a khc vi cc Tablespace cha d liu. iu ny c th tng tc thc hin truy xut CSDL v cn mt l do na l nu Tablespace cha Index b mt th c th d dng to li.

V d trong h qun l ho n nc c 8 Table space c to nh sau:

Tablespace USERScha cc i tng ca ngi dng nm trong Data File Usr1BRN.ora v kch thc l 100M.

Tablespace TEMP l vng cha cc thng tin tm nm trong Data File Tmp1BRN.ora' size 80M;

Tablespace RBS dng cha cc Rollback segment nm trong data File Rbs1BRN.ora' kch thc 60M;

Tablespace INDEXES cha cc Index nm trong Data File Ind1BRN.ora kch thc 100M;

Tablespace CUST cha cc bng t thay i v khch hng v thng tin lin quan nm trong Data File Cus1BRN.ora kch thc 50M;

Tablespace BILL cha cc bng ho n hay thay i nm trong Data File Bil1BRN.ora kch thc 50M;

Tablespace USAGE cha cc thng tin v loi hnh s dng nm trong Data File Usg1BRN.ora kch thc 50M;

Tablespace METER cha cc thng tin v ng h nm trong Data File Met1BRN.ora kch thc 50M;

3. Ti u vng nh h thng SGA

Khi Oracle hot ng th mi thng tin phi cha trong b nh hoc a. Do vic truy xut trn RAM s nhanh hn nhiu vi vic truy xut trn a cho nn mt trong nhng thao tc c bn trong ti u h thng c th hot ng hiu qu hn bng vic thay i cc tham s ca vng nh SGA (cc tham s nm trong Init File, c th tm thy file ny th mc DATABASE). Ch rng nn cu hnh lm sao cho ton b vng nh SGA nm trong Physical Memory l tt nht. C th thay i kch thc ca SGA thng qua vic thay i tng thnh phn ca SGA v ln ca SGA chnh l tng ln ca ba thnh phn Share Pool + Buffer Cache + Redo Log Buffer.

iu chnh kch thc Share Pool qua thng s shared_pool_size trong Parameter File. Trong Share Pool c ba thnh phn l Library cache, Data dictionary cache v Session information. Kch thc ca Share Pool l thch hp khi n tho mn cc iu kin di y.

- Vi ln Library cache thch hp khi m t l s ln th tc v hm trong th vin c thc hin (PINS) chia cho s ln hm v th tc phi np t a (RELOADS). T l ny nh hn hoc bng 1% v cng gn 0 cng tt. bit c t l ny cn thc hin cu lnh sau:

SELECT (sum(reloads)/sum(pins))*100,% FROM v$librarycache;

Kt qu thc hin vi Database Center 0.09366945%, nh vy b nh dnh cho Library Cache kh nhiu.

- ln ca Data dictionary cache thch hp khi t l s ln ly thng tin (GETS) chia cho s ln thng tin khng c (GETMISSES) nm trong khong 10% n 15% v cng gn 0 cng tt. Gi tr ny c bit qua cu lnh sau:

SELECT (SUM(GETMISSES)/SUM(GETS))*100,'%' FROM V$ROWCACHE;

Kt qu thc hin vi Database Center l 2.0352019%, nh vy vng b nh dnh cho Data dictionary cache kh nhiu.

iu chnh ln ca Database Bufer Cache: Thnh phn ny c Oracle chia lm nhiu Block mi Block c kch thc c nh tu thuc h iu hnh v xc nh qua tham s db_block_size trong Parameter File. Bng cch thay i s Block (qua tham s db_block_buffers) s thay i c kch thc ca Database Bufer Cache.

ln ca Database Bufer Cache thch hp khi t l s khi d liu c c t a (physical reads) chia cho tng s cc khi c yu cu (db block gets + constent gets). T l ny nn nh hn 30% n 40% v cng gn 0 cng tt. C th xc nh c t l ny qua cc cu lnh sau.

CREATE TABLE kq (ratio number);

DECLARE

p NUMBER;

d NUMBER;

c NUMBER;

r NUMBER;

BEGIN

SELECT value INTO p FROM v$sysstat WHERE name='physical reads';

SELECT value INTO d FROM v$sysstat WHERE name='db block gets';

SELECT value INTO c FROM v$sysstat WHERE name='consistent gets';

r := p/(d+c);

r := r*100;

INSERT INTO kq VALUES (r);

EXCEPTION

WHEN ZERO_DIVIDE THEN

INSERT INTO kq VALUES (0);

END;

/

SELECT ratio,'%' FROM kq;

DROP TABLE kq;Kt qu thc hin Database Center l 64.517194 %, iu ny chng t vng b nh dnh cho Database Bufer Cache tt v nn dnh thm vng b nh t Share Pool sang.

Kch thc ca Redo Log Buffer c th iu chnh c bng tham s log_buffer trong Parameter File.4. Ti u ho s dng Index

Vic Index gip tng tc truy nhp ti bng tuy nhin n li gim tc ca qu trnh thm, cp nht d liu. Ni chung nn to Index khi d liu ca ct c tnh chn lc cao (gi tr trng lp) khng nhiu v Index c bit hu ch khi m s lng hng tm c l 2% - 4% so vi s lng hng ca bng. Khi s lng cc hng tr li l nhiu th bn thn vic truy nhp trn B-tree cng mt kh nhiu thi gian v vy lc dng phng php duyt ton b c th li nhanh hn. Khng nn to Index cho cc ct cha qu t gi tr khc nhau nh YES v NO, tuy nhin nu cc cu lnh thng xuyn lm vic vi mt gi tr tr gi s l gi tr YES th vic to Index li tng tc thc hin. Mt khc do c nhiu loi Index vi cc u nhc im ring tu thuc vo tng c im d liu do vy cn chn phng php Index thch hp nh Index thng thng tt khi cu lnh c tnh chn lc cao, Index Bitmap c tc dng khi s hng nhiu, gi tr lp li t (tnh chn lc thp), Cluster thch hp cho cc bng c lin kt c dng thng xuyn.

5. Ti u bng thay i cu lnh SQL

y l phn trng tm ca qu trnh ti u cu lnh SQL cho cc cu lnh SQL mi tng ng cu lnh SQL c v mt kt qu nhng c thi gian chy nhanh hn nhiu. Mc d Oracle h tr cho vic ti u cc cu lnh SQL a vo tuy nhin trong mt s trng hp ngi pht trin phn mm phi t chuyn cu lnh thnh cu lnh c kt qu tng ng cho ti u hn nh cu lnh

SELECT TnNhnVin, Lng FROM NhnVin WHERE Lng*10>20,000;

thnh:SELECT TnNhnVin, Lng FROM NhnVin WHERE Lng>2,000;

Trong ph lc B s gii thiu v qu trnh ti u bng thay i cu lnh trn view ca phn mm Tra cu vn bn php qui. Thi gian thc hin cu lnh cha ti u l 41.43 giy, sau khi ti u thi gian thc hin cn 2.36 giy (bng 4.8 %).

Trong ph lc C s gii thiu v qu trnh ti u bng thay i cu lnh kt ni cng ca phn mm Tra cu vn bn php qui. Thi gian thc hin cu lnh cha ti u l 1.16 giy, sau khi ti u thi gian thc hin xp x 0 giy.

Nh vy thc t l qua hai qu trnh ti u th khi tra cu thng tin v Vn bn php qui do Vn phng chnh ph v UBND cc tnh ban hnh bng Web trn mng th thi gian p ng t 41.43 giy xung xp x 1.2 giy. Thi gian p ng nm qu trnh Dial up v hin th ca trnh duyt Web.

Mt s v d khc v qu trnh ti u s c gii thiu trong phn ti u ho H tnh ho n nc v qun l khch hng ca cng ty cp nc Thnh ph H Ch Minh (WSC).

6. Thm cc ch th thc hin vo trong cu lnh

L do thm cc ch dn: Bt k ngi thit k phn mm no cng bit r v c im v d liu hn Oracle v vy trong mt s trng hp cn ch dn cho Oracle thc hin cu lnh theo hng mong mun.

V d:

SELECT * FROM tab1 WHERE col1=A;

SELECT * FROM tab1 WHERE col1=B;

Gi s rng ct col1 ca bng tab1 cha cc k t t A n Z vi s lng l 1000 dng trong 75% s dng cha k t A v mi k t cn li chim 1% s dng ca bng. Vi cu lnh th nht dng phng php duyt ton b s nhanh hn s dng Index cn trong cu lnh th hai th s dng Index th li nhanh hn duyt ton b. Nh vy bng vic s dng ch dn Oracle c th thc hin cu lnh hiu qu hn (b ti u s s dng Index cho c hai cu lnh).

Cc ch dn c th p dng cho cc cu lnh n SELECT, UPDATE, INSERT v vit theo c php sau:

hoc

Cc ch dn phi i ngay sau cc t kho DELETE, UPDATE, INSERT.

Du cng (+) l ch th bo cho Oracle bit rng bt u cc ch dn thng dch v trong cc ch dn ny c th c cha cc ch thch. C cc kiu ch dn thc hin chn lut ti u, chn cch truy nhp, chn th t kt ni v chn thao tc kt ni.

6.1. Ch dn chn lut ti u

ALL_ROWS: Ch n ny bo cho Oracle bit phi s dng lut ti u c lng gi cho khi lnh sao cho tng s ti nguyn c s dng l ti thiu (ngha l s khi lnh c x l ng thi l ti a).

V d:

SELECT /*+ ALL_ROWS */ MNhnVin,TnNhnVin FROM NhnVin WHERE MNhnVin=7566;

FIRST_ROWS: Ch dn chn lut ti u c lng gi vi thi gian p ng l ti thiu (v ti thiu ngun ti nguyn c s dng tr li hng u tin). Ch dn ny s p Oracle chn phng thc truy nhp bng Index thay cho duyt ton b (nu c sn Index). Nu khng c sn Index th Oracle s s dng phng thc truy nht bng Nested-loop thay cho Merge-sort. Ch dn ny khng c tc dng khi cu lnh s dng ton t tp hp (UNION, INTERSEC, MINUS, UNION ALL), mnh GROUP BY, mnh FOR UPDATE, hm lm vic vi nhm hng (MIN, MAX, SUM, COUNT) v ton t DISTINCT.

CHOOSE: Ch dn ny cho php Oracle chn lut ti u da trn thng tin trong t in d liu, nu c thng tin v cc bng th lut ti u c lng c p dng cn ngc li th p dng lut ti u c bn.

RULE: p dng lut ti u c bn cho cu lnh.

6.2. Ch dn v chn phng thc truy nhp

FULL: S dng phng thc duyt ton b vi mt bng c bit bng ch dn FULL() v nn s dng b danh (alias) cho tn bng.

V d:

SELECT /*+ FULL(a) Khng s dng Index cho bng NhnVin c b danh l a */ MNhnVin, TnNhnVinFROM NhnVin a

WHERE MNhnVin=7566;

ROWID: S dng duyt bng bng ROWID cho mt bng c bit bng ch dn ROWID().

CLUSTER: Chn phng thc duyt bng Cluster cho mt bng bng ch dn CLUSTER()

V d:

SELECT --+ CLUSTER NhnVin

TnNhnVin, MPhng

WHERE MPhng=10 AND NhnVin.MPhng=Phng.MPhng;

HASH: Chn phng thc truy nhp bm (hash scan) cho mt bng bng ch dn HASH().INDEX: Chn cch truy nhp bng Index cho mt bng theo c php sau

Nu danh sch Index c nhiu gi tr th Oracle s c lng gi ca phng thc duyt ng vi mi Index v chn ra phng thc no c gi nh nht. Nu khng Index c ch ra trong danh sch th Oracle s tin hnh c lng gi thng qua cc Index c sn trong CSDL ang truy nhp.

V d:

SELECT /*+ INDEX(NhnVin giitnh_index) s dng Index trn ct gii tnh ca bng NhnVin khi m c t n : GiiTnh=0 */

TnNhnVin, Lng WHERE GiiTnh=0;

INDEX_ASC: Ch dn chn phng thc truy nhp qua Index v nu Index l duyt c gii hn (Index Range Scan) th s theo chiu tng dn ca gi tr c Index.

INDEX_DESC: Ch dn chn phng thc truy nhp qua Index v nu Index l duyt c gii hn (Index Range Scan) th s theo chiu gim dn ca gi tr c Index.

AND_EQUAL: Chn phng thc truy nhp bng duyt trn nhiu Index n. Ti thiu phi c hai Index n v ti a l nm Index n.

USE_CONCAT: Ch dn ny buc iu kin OR trong mnh WHERE chuyn thnh query s dng ton t tp hp UNION ALL. Thng thng vic chuyn ny ch c thc hin khi gi ca vic chuyn l nh hn vi gi ca cu lnh ban u.

6.3. Ch dn v th t kt ni trong cu lnh s dng kt ni

ORDERED: Ch dn th t kt ni tun theo th t xut hin tn cc bng trong mnh FROM.

V d:SELECT /*+ ORDERED */ tab1.col1, tab2.col2, tab3.col3 FROM tab1, tab2, tab3 WHERE tab1.col1=tab2.col1 AND tab2.col1=tab3.col1Cc v d y hn s c gii thiu trong ph lc D. Ch dn cho qu trnh chn thao tc kt ni

USE_NL: Ch dn chn thao tc kt ni Nested-Loop vi bng ni (inner table) c ch ra

USE_HASH: Ch dn chn thao tc kt ni Hash-Join.

USE_MERGE: Ch dn chn thao tc kt ni Merge-Sort.

Cc ch dn kt ni rt quan trng iu khin qu trnh kt ni theo ng mong mun ca ngi lp trnh. Ph lc D s a ra mt v d c s dng ch dn kt ni ca phn mm Tra cu vn bn php qui gii quyt c yu cu t ra v tc .

Chng IV Gii thiu v ti u ha cu lnh SQL trong h tnh ho n v qun l khch hng cng ty cp nc Thnh ph H ch minh

Ni dung chnh yu ca chng ny l a ra nhng cch thc c th ti u ho cu lnh SQL trong H tnh ho n v qun l khch hng cng ty cp nc Thnh ph H Ch Minh. Trong phn A s gii thiu v qui m ca bi ton ni trn nu ln c ngha ca ti u ho, do qui m ca bi ton ln (vi 500,000 khch hng, 1 triu ng h, 3 triu ch s ng h, 5 triu ho n....) dn n mi ci tin u rt c ngha. Trong phn B s gii thiu phng php tm nhng cu lnh cha ti u v trong phn C l cc v d thc nghim c s dng trong H tnh ho n v qun l khch hng nng cao tc x l cho phn mm ny.

A. Gii thiu v h chng trnh Tnh ho n v qun l khch hng

1. t vn

Cng ty cp nc TP H Ch Minh (WSC - Water Supply Company) l mt doanh nghip quc doanh ln thc hin cng vic m bo cung cp nc sinh hot cho hng trm ngn h c tr trn a bn thnh ph. m bo quyn li nhn dn cng nh ca WSC, cng ty k kt hp ng cung cp nc cho khch hng v hng thng khch hng s nhn c ho n yu cu thanh ton s tin tng ng vi khi lng nc s dng. Vi s lng khch hng nhiu nh vy, vic qun l doanh thu m bo cho chnh xc, kp thi l yu t rt quan trng nh hng n hot ng kinh doanh ca WSC.

WSC c nhiu nm ng dng my tnh trong sn xut v qun l kinh doanh. Trc nm 1975, WSC s dng h my tnh IBM qun l v tnh ho n thanh ton tin nc. T nm 1990 h ny c thay bng cc chng trnh vit bng FoxBase trn PC, sau ny chuyn sang FoxPro. Hin ti h thng c vit trn PC hot ng c rt nhiu hn ch nh d liu b phn nh, qui trnh thao tc phc tp, thc hin bng tay nhiu do khng c kt ni thng nht. Cc bo co phi tng hp t cc phn nh, khi in c ho n m pht hin sai th phi sa mc lp trnh do vy cc bo co v tnh hnh kinh doanh khng p ng kp thi, km chnh xc.

ng trc yu cu hin i ho mng li cp nc, t nm 1997 WSC c trang b mt h thng mng my tnh hin i, i hi mt h thng phn mm mi, ng dng cng ngh hin i, c kh nng kt ni din rng, qun l lng khch hng ln v p ng yu cu nghip v mi. Nhn vin cng c tc phong cng nghip v cc thao tc h thng tr thnh mt thi quen nghip v. WSC cn xy dng H tnh ho n v qun l khch hng phc v cho cng vic kinh doanh ca mnh t hiu qu hn. Mc tiu t ra i vi h thng l phi p ng c 142 yu cu do cc chuyn gia t vn nc ngoi bao trm ln cc lnh vc:

+ Khch hng

+ Yu cu v khiu ni ca khch hng

+ ng h vt t, thit b v v tr lp t ng h

+ Biu gi tin nc v tin ph thu

+ Ch s ng h v X l ho n tin nc

+ Thu tin

+ Thng pht khch hng

+ Phiu cng tc/thi cng v nhn s

+ p ng yu cu nghip v hin ti

Nh vy h thng mi va phi thc hin theo nhng yu cu hin i nhng li khng c ph v nhng qui trnh nghip v tn ti t lu.

Vic xy dng mt phn mm qun l khch hng v tnh ho n nc cho cng ty cn thit phi c mt mng my tnh cc b v quan trng hn l phi c H qun tr CSDL trn mng. Tuy c nhiu H qun tr CSDL h tr cho ngn ng SQL nh Access, Foxpro, , DB2, Sybase ... nhng Oracle l cng c pht trin thch hp hn c v y l mt bi ton phn tn thc s vi CSDL ln, nhiu ngi dng s khai thc trit cc u im ca Oracle nh nu chng II.

2. Phn tch bi ton

Cc khch hng ca WSC c cc nhn vin theo di v qun l vic thanh ton dch v thng qua cc ho n. Trn ho n ghi r ngy vit ho n, tn khch hng, s lng nc s dng, n gi tnh trn mt n v tnh, s tin khch hng phi tr v tn nhn vin vit ho n kim thu tin. Ho n ny c sao lm nhiu bn trong mt bn khch hng gi, mt bn th qu gi, mt bn k ton gi. K ton phi bo co cho lnh o v doanh thu trong thng, s tin thu v qu, s tin khch hng cn n, danh sch khch hng cha thanh ton ho n c bin php x l. Ngoi ra ban lnh o cng cn c bit mc s dng nc mi khu v s chnh lnh v mc gia cc khu vi nhau c s iu chnh hp l trong vic cung cp nc.

Cc s chc nng FHD (Function Hearchy Diagram):

H qun l ho n nc c thit k hng chc nng gm bn phn h thnh phn trong c hn 120 module chng trnh, 70 module lm bo co, 30 Database triggers, 83 th tc v hm.

Di y l cc s chc nng cho tng phn h

S quan h thc th ERD (Entity Relationship Diagram):

H qun l ho n nc bao gm 105 thc th trong cc thc th quan trng l :

+ Khch hng (Customers) : H thng lu cc thng tin khch hng nh tn, a ch, s CMT... Cc thng tin lin quan n tnh tin nc v bo co th c chun ho. Mi khch hng c mt m s duy nht gi l m danh b (cust_no) da trn a danh qun,phng v ng ph. Ngoi ra ng vi mi khch hng chnh cn c th cc khch hng ph c phn bit bi sub_cust_id (nu l khch hng chnh th thuc tnh ny nhn gi tr null). Vi mi loi khch hng thuc mt trong cc loi: T gia, Tp th, C quan, Ngi nc ngoi. Khch hng c th s dng nc cho nhiu mc ch khc nhau nh dng cho sinh hot, sn xut, dch v v mi mt ch c mt gi biu ring. Mt khch hng thuc mt t tnh ho n/thu tin/c s nht nh. ng h lp t c lu y cc thng s k thut v v tr vt l.

Hin nay tng s khch hng ca cng ty l 500,000.

+ ng h (meter): y l mt trong cc vt t ca cng ty cn c qun l vi s lng 1,000,000 chic.

+ Mi ng h c ci t cho khch hng u phi lu gi cc thng tin lin quan nh m khch hng, kinh , v , nhn hiu, nc sn xut, kiu mt s.

+ Ho n (Bills): 5,000,000.

+ Chuyn n kh i: 1,000,000

+ Ch s ng h (Metereading) l mt trong nhng phn nhp liu chnh, phc tp, c thc hin hng thng trc khi tnh ho n tng cng l 3,000,000 ch s. Mi t cn phi nhp khong 20,000 ch s ng h vi cc trng thi khc nhau. Trng thi c s: Theo l thuyt th ch s ng h s tun t tng v Ch s mi nh hn Ch s c ch khi vt qua s ti a. Nhng thc t vic nhp ch s l mt vn kh phc tp v c nhiu tnh hung nh: Mi lp, Thay ng h, ng h b kt kim, Khng c c s v ngp nc, vng nh...

+ S liu thanh ton:5,000,000

+iu chnh hp ng: 1,000,000

+Phiu cng tc:

500,000

+Yu cu v khiu ni: 100,000

3. Gii quyt bi ton

Trn c s t chc mng nh trn, H qun l ho n nc, c thit k theo m hnh c s d liu phn tn trn mi trng Oracle.

H gm mt c s d liu trung tm v 4 c s d liu 4 chi nhnh. Ti trung tm c th truy nhp d liu ca c 4 chi nhnh. Mi chi nhnh ch c th truy nhp v cp nht d liu ca chi nhnh .

Ti trung tm 2 my ch chnh l Billing v Account c ni vi nhau v chy theo ch d phng (Main-Standby). Khi my th nht c s c, th my th hai s m nhn nhim v ca my ch th nht. m bo h thng thng xuyn hot ng.

Trng hp my ch Chi nhnh c s c th c th khi phc y d liu t trung tm, nh vy h thng m bo khng b mt d liu

Trong giai on ny, da vo cc s thc th v s chc nng ca h thng tin hnh Generate ra thnh cc cu lnh SQL DDL (Data Define Language) to ra cc bng, cc Form v cc Report.

B. Cch thc tm ra nhng lnh cn ti u trong phn mm

tm ra c cc lnh SQL cha ti u trong phn mm cn to ra bn sao cc lnh c thc hin mt cch thc s (cu lnh SQL c thc hin c th khng ging nh cu lnh SQL vit trong chng trnh) sau xy dng li cy phn tch. Qu trnh to bn sao cu lnh trong phn mm ch c thc hin khi cc tham s trong Parameter File c gi tr:

timed_statistics = true# Tnh ton thi gian thc hin cu lnh

sql_trace = true

# To cc file c tn m rng l trc

# Ni cha cc file *.trc do cc tin trnh ca h thng

background_dump_dest=%RDBMS80%\trace

# Ni cha cc file *.trc do cc tin trnh ca ngi dng

user_dump_dest=%RDBMS80%\trace

Sau khi thc hin cc thay i trong Init File th CSDL phi c kt ni li (Shutdown sau Startup) cc tham s ny c tc dng. Khi thc hin mt chng trnh th hnh nh ca cc tin trnh sinh ra s c ghi li ra a. Bng trnh tin ch TKPROF.EXE c th gii ngha cc tin trnh ny cng nh dng li cy phn tch lnh t tm ra cc lnh cha hp l m cn thit phi ti u (c th ni nhiu file *.trc li cho TKPFOF thi hnh mt ln).

C php:

TKPROF filename1 filename2 [ SORT = [ ( ] option [ , option, option,..) ] ] [ PRINT = integer ]

[ INSERT = filename3 ] [ SYS = Yes | No ] [ TABLE = schema.table ]

[ EXPLAIN = user/password ]

Trong cc tham s

- filename1: tn file nh ca tin trnh ( *.trc )

- filename2: tn file kt qu ca TKPROF.

-EXPLAIN: Kt ni vo CSDL ca Oracle vi danh ngha user/password ri xy dng cy phn tch lnh bng EXPLAIN PLAN (xem ph lc A).

- TABLE: Tn lc v tn bng trong lc trung gian to ra file kt qu.

- INSERT: Tn file SQL script to bng cha ni dung file kt qu.

- SYS: Bt/tt danh sch cu lnh ca qun tr h thng (User SYS)

- SORT: Sp xp th t kt qu theo trnh t ch ra nh thi gian, s hng, s khi c t a...

- RECORD: To ra SQL script ghi li cc cu lnh c thc hin c th ti hin li cc qu trnh ca ngi dng.

Trong file kt qu ca TKPROF gm c cc thng tin v cc qu trnh phn tch lnh (parsed), thc hin (Executed), ly kt qu (Fetched) ca cu lnh, s hiu tin trnh ngi dng, s ln cc gi hm th vin phi np vo (Library Cache Misses), cy phn tch lnh. Trong cc ct ca cy phn tch lnh c thng tin s ln thc hin cu lnh (count), thi gian s dng CPU (CPU), thi gian trong cc giai on thc hin cu lnh (Elapsed), s lng khi d liu c t a (Disk), s b m cn nhn (Query), s b m hin c (Current), s hng c truy xut (Rows). Ngoi ra Oracle cn cung cp lnh EXPLAIN PLAN a ra cy phn tch lnh, ANALYZE phn tch d liu t mi trng SQL/PLUS (xem phn ph lc A).

C. Thc hin ti u phn mm Qun l ho n nc

1. Ti u bng s dng Index

Khi h qun l ho n xy dng xong v c a vo s dng th qu trnh tnh ho n ca h vn chm. c th tng tc thc hin ca chng trnh, cc cu lnh thc hin trong qu trnh tnh ho n c phn tch v kt qu cho thy trng thi mi ho n c tnh xong s c cp nht vo bng ho n (Bills) theo m khch hng (cust_id), tuy nhin bng Bills li thiu Index trn ct ny v vy dn n vic truy nhp bng phi dng phng thc duyt ton b (xem cy phn tch lnh lit k di).

kim tra xem mt ct c INDEX hay cha bng cch xem View ca h thng cha thng tin v cc ct Index c cha ct hay khng nh cu lnh sau:

SELECT index_name,column_name FROM user_ind_columns

WHERE table_name='BILLS';

Kt qu thu c nh sau:

INDEX_NAME

COLUMN_NAME

------------------------------

------------------------------

BILL_CRE_SCO_FK_I

CR_SCORE_STT

BILL_EMP_FK_I

EMP_ID

Theo kt qu trn th Index ct cust_id ca bng Bills cha tn ti v vy cn to Index cho ct CUST_ID ca bng BILLS nh sau:

CREATE INDEX bill_cust_id ON bills(cust_id);

Sau khi to cc Index th phng thc truy nhp bng BILLS chuyn t duyt ton b (FULL) tr thnh duyt qua Index c gii hn (RANGE SCAN trong cy phn tch lnh), thi gian thc hin ca cc cu lnh tng ng c lt k trong bng so snh:

Cu lnh tnh ho n da trn bng ho n c s (Based_Bill):

begin :X0 := SP_WBL_CALCULATE_BASED_BILL(:CUST_ID_, :SUB_CUST_ID_,

:BRANCH_CODE_, :PERIOD_, :YEAR_, :NAME_, :CUSTOMER_NO_, :CONTRACT_NO_,

:ACRINYM_, :BC_NAME_, :CURRENCY_ID_, :PERCENTAGE_, :ADDRESS_, :SIGN_,

:BILL_STATUS_, :OLD_STT_, :OLD_PERIOD_, :OLD_YEAR_, :BILL_NO_);

end;

Bng so snh thi gian thc hin procedure trc v sau khi to Index

IndexCall countcpuelapseddiskquerycurrentrows

Khng20.3724.851308134041

C20.280.2803721

Cu lnh tm lng nc iu chnh, lng nc tiu th v m trng thi t bng ho n (Bill):

SELECT NVL(WATER_ADJUST,0),NVL(LNTT,0),STATUS_CODE FROM BILLS

WHERE CUST_ID = :b1 AND STT = :b2;

Bng so snh thi gian thc hin cu lnh trc v sau khi to Index

IndexCall countcpuelapseddiskquerycurrentrows

Khng30.1024.031308131022

C30.010.010602

Cy phn tch lnh khi cha c Index

RowsExecution Plan

----------------------------------------------------------

0SELECT STATEMENT GOAL: CHOOSE

9827TABLE ACCESS (FULL) OF 'BILLS'

Cy phn tch lnh khi c Index

Rows Execution Plan

------- ---------------------------------------------------

0 SELECT STATEMENT GOAL: CHOOSE

0 TABLE ACCESS (BY ROWID) OF 'BILLS'

0 INDEX (RANGE SCAN) OF 'BILL_CUST_ID' (NON-UNIQUE)

Cu lnh chuyn m trng thi cho cc ho n c tnh:

UPDATE BILLS SET PAID_STATUS=4

WHERE CUST_ID = :b1 AND STT IN

(SELECT STT FROM BASED_BILLS WHERE CUST_ID = :b1

AND NVL(SUB_CUST_ID,0) = :b3 AND STT != :b4 AND PERIOD = :b5

AND BILLING_YEAR = :b6 );

Bng so snh thi gian thc hin cu lnh trc v sau khi to Index

IndexCall countcpuelapseddiskquerycurrentrows

Khng20.0529.001308131653

C20.040.3204144

Cy phn tch lnh khi cha c Index

Rows Execution Plan

------- ---------------------------------------------------

0 UPDATE STATEMENT GOAL: CHOOSE

3 MERGE JOIN

4 SORT (JOIN)

9828 TABLE ACCESS (FULL) OF 'BILLS'

3 SORT (JOIN)

3 VIEW

3 SORT (UNIQUE)

4 TABLE ACCESS (BY ROWID) OF 'BASED_BILLS'

5 INDEX (RANGE SCAN) OF 'B_B_CUST_FK_I' (NON-UNIQUE)

Cy phn tch lnh khi c Index

Rows Execution Plan

------- ---------------------------------------------------

0 UPDATE STATEMENT GOAL: CHOOSE

0 NESTED LOOPS

0 VIEW

0 SORT (UNIQUE)

0 TABLE ACCESS (BY ROWID) OF 'BASED_BILLS'

0 INDEX (RANGE SCAN) OF 'B_B_CUST_FK_I' (NON-UNIQUE)

0 TABLE ACCESS (BY ROWID) OF 'BILLS'

0 INDEX (RANGE SCAN) OF 'BILL_CUST_ID' (NON-UNIQUE)

Cu lnh xc lp gi tr tin thu iu chnh v ph thu iu chnh:

UPDATE BILLS SET MONEY_ADJUST=:b1,SURCHARGE_ADJUST=:b2

WHERE CUST_ID = :b3 AND STT = :b4;

Bng so snh thi gian thc hin cu lnh trc v sau khi to Index

IndexCall countcpuelapseddiskquerycurrentrows

Khng20.0228.281308131231

C20.030.030811

Cy phn tch lnh khi cha c Index

Rows Execution Plan

------- ---------------------------------------------------

0 UPDATE STATEMENT GOAL: CHOOSE

0 TABLE ACCESS (FULL) OF 'BILLS'

Cy phn tch lnh khi c Index

Rows Execution Plan

------- ---------------------------------------------------

0 UPDATE STATEMENT GOAL: CHOOSE

0 TABLE ACCESS (BY ROWID) OF 'BILLS'

0 INDEX (RANGE SCAN) OF 'BILL_CUST_ID' (NON-UNIQUE)

Ch thch: Sau khi th nghim tnh 3858 ho n bt u t 03:39:25 n 04:47:48 th xong. Tc tnh trung bnh l 58 ho n/ pht. Khi cha to Index th vi iu kin nh vy thi gian tnh l 173 pht (gp 2.5 ln).

2. Ti u bng thm ch th thc hin v thay i cu lnh SQL

Cu lnh cha sub query:

V d ly ra cc thng tin v khch hng thuc chi nhnh Si Gn vi iu kin c tnh ho n l thuc t tnh ho n ang tnh (BC_CODE = 'A5'), thuc v chi nhnh Si Gn (BRANCH_ID = 3), ang lp t ng h v ang c cung cp nc (ACTIVE = 1, STATUS=1) c th dng cu lnh sau:

SELECT ID, NAME, CUSTOMER_NO, CONTRACT_NO, CURRENCY_ID, SORT_NAME, BRANCH_CODE, ADDRESS

FROM SNAP$_CUSTOMERS$SG

WHERE ID IN (SELECT CUST_ID FROM SNAP$_ABC$SG WHERE STATUS=1 AND BC_CODE='A5'

AND BRANCH_ID=3 AND ACTIVE=1);

Vi mi hng thuc bng CUTOMERS u phi duyt ln lt ng vi bng SNAP$_ABC$SG. Tng s thi gian thc hin l:

callcountcpuelapseddiskquerycurrentrows

total2695.289.4614445254634002

Cy phn tch lnh:

Rows Execution Plan

------- ---------------------------------------------------

0 SELECT STATEMENT GOAL: CHOOSE

13965 FILTER

13965 TABLE ACCESS (FULL) OF 'SNAP$_CUSTOMERS$SG'

4002 FILTER

9111 TABLE ACCESS (BY ROWID) OF 'SNAP$_ABC$SG'

19073 INDEX (RANGE SCAN) OF 'ASS_BCY_CUST_FK_I_SG' (NON-UNIQUE)

Cu lnh tng ng s dng php kt ni:

SELECT ID, NAME, CUSTOMER_NO, CONTRACT_NO, CURRENCY_ID, SORT_NAME,

BRANCH_CODE, ADDRESS

FROM SNAP$_CUSTOMERS$SG, SNAP$_ABC$SG WHERE STATUS=1 AND ID=CUST_ID

and BC_CODE='A5' AND BRANCH_ID=3 AND ACTIVE=1;

Thi gian thc hin:call

countcpuelapseddiskquerycurrentrows

total2691.992.443092063224002

Cy phn tch lnh:

Rows Execution Plan

------- ---------------------------------------------------

0 SELECT STATEMENT GOAL: CHOOSE

4002 NESTED LOOPS

9113 TABLE ACCESS (FULL) OF 'SNAP$_ABC$SG'

4003 TABLE ACCESS (BY ROWID) OF 'SNAP$_CUSTOMERS$SG'

8006 INDEX (RANGE SCAN) OF 'CUST_PK_I_SG' (NON-UNIQUE)

Kt lun

nh gi chung v ti v cc kt qu

H qun tr CSDL l mt h rt phc tp gm nhiu modul c thit k hng chc nng trong modul ti u chim v tr quan trng bc nht trong qu trnh pht trin cc phn mm ng dng trn .

Trong iu kin l tng, modul ti u s m bo cc cu lnh SQL tng ng v mt ng ngha (cng semantics) s c thi gian thc hin l nh nhau v nh nht.

Trn thc t, ngay c i vi cc h Qun tr CSDL thng minh him khi t c iu ny. V vy cc nh pht trin h Qun tr CSDL li khng gian cho ngi vit ng dng cng nh qun tr CSDL tu theo iu kin, c th tc ng n modul ti u cc cu lnh SQL.

Ti u cc cu lnh SQL trong lun vn ny thc cht l tc ng n modul ti u v modul thc hin lnh SQL.

tc ng n modul ti u hu hiu mang li kt qu mong mun, lun vn phn tch v gii quyt c vn sau:

Khi no cn to index, to kiu index g, index trn ct hoc t hp ct no.

Thu thp thng tin v CSDL, modul ti u c thm thng tin phc v cho qu trnh nh gi cc cu lnh SQL.

iu khin cch thc hin lnh SQL ca modul ti u.

Cch thay i cc tham s ca h Qun tr CSDL nhm gip cho modul ti u v cc thnh phn khc s dng c hiu qu ti nguyn ca h thng nh b nh RAM, a cng, CPU.

a ra kh nng v hn ch ca h Qun tr CSDL trong vic ti u v thc hin cc cu lnh SQL, t ra nguyn tc m ngi pht trin cn tun th khi vit cu lnh SQL.

Tt c cc vn trn c cp trong mi lin quan tng h vi nhau v vi HH, loi ng dng v mi trng ng dng c th.

Tuy tt c ch thc hin vi h Qun tr CSDL c th Oracle, nhng d dng ng dng cho cc h Qun tr CSDL khc.

Lun vn s dng cc cch gii quyt nu trn cho mt bi ton c th l H tnh ho n v qun l khch hng ca WSC. y l mt h thng mi c pht trin v bc u a vo s dng. Bi ton c thit k cng phu c nhiu chc nng vi hng trm thc th, hot ng trong mi trng phn tn. Khi lng d liu c th ni l kh ln, m bo nhu cu t ra v tc x l l vn sng cn ca h thng.

Trong phn v d thc nghim, lun vn thc hin vic:

Tm ra cc cu lnh SQL chy chm, tn nhiu ti nguyn HH

Phn tch cc cu lnh

ra bin php gii quyt (cch ti u)

So snh kt qu chy th trc v sau khi s dng cch ti u ca lun vn, c th thy nhiu ni tc nhanh ln 3- 4 ln. y l li ch thit thc v c ngha.

Do khun kh c hn ca lun vn cng nh gii hn v thi gian, khng khi khng c nhng thiu st v hn ch. Pht trin v m rng ti l cn thit, xin n c mt vi tng lin quan n vic xy dng m hnh, th v nh gi ton din, o tc thc hin ca h phn mm:

nh gi nh hng ca mi trng mng my tnh i vi h CSDL hot ng phn tn trn nhiu nt mng.

Phn tch cch thc hin, nh gi, ti u cch lnh truy nhp d liu phi cu trc

Phn tch nh hng ca cc loi ng dng khc nhau (OLTP, OLAP, GIS,...) i vi h Qun tr CSDL v d liu.

Ti liu tham kho

1. Nhp mn c s d liu quan h , Tc gi L Tin Vng, NXB KH v KT.

2. Phn tch v thit k tin hc h thng Qun l-Kinh doanh-Nghip v, NXB Giao thng vn ti.

3. Oracle Corp: Introduction to Oracle: SQL, SQL*Plus and PL/SQL, Couse Note - 1992

4. Oracle Server Turning Part No. A32537-1 Printed in the U.S.A June, 1996

5. Participant guide: Administer the Oracle Database Part No. A32535-1 Printed in the U.S.A February 1996.

6. Oracle 7 Server - Concepts Part No. A32534-1 Printed in the U.S.A February 1996.

Ph lc

Ph lc A Cc lnh phn tch i tng v phn tch cu lnh Lnh ANALYZE

Chc nng: Phn tch thng tin trng thi v mt mt index, bng, hoc cluster v a cc thng tin ny vo vo trong t in d liu s dng cho vc ti u ho.

C php:

ANALYZE { INDEX | TABLE | CLUSTER } [.]

{ COMPUTE STATISTICS | ESTIMATE STATISTICS | DELETE STATISTICS

| VALIDATE STRUCTURE }

Gii thch:

SCHEMA: Tn lc cha i tng cn phn tch. Nu b qua i s ny th Oracle s s dng lc ca User hin ti. Khi phn tch mt bng th cc Index trn bng ch ra cng t ng c phn tch. Vi Cluster th ton b cc bng, cc Index v Index ca Cluster cng c phn tch.

COMPUTE STATISTICS: Tnh ton chnh xc trng thi cc i tng v t chng trong t in d liu.

ESTIMATE STATISTICS: c lng trng thi cc i tng c phn tch.

DELETE STATISTICS: Xo thng tin trng thi ca i tng trong t in d liu.

VALIDATE STRUCTURE: Kim tra v lm hp l cu trc ca cc i tng c phn tch.

Lnh EXPLAIN PLANChc nng: Xy dng cy phn tch lnh vi lnh c a ra.

C php:

EXPLAIN PLAN [SET STATEMENT ID = 'text'] [INTO [.]]

FOR Gii thch:

SET: Gi tr c bit cho ct STATEMENT_ID trong cy phn tch lnh. Gi tr ngm nh l null.

INTO: Tn bng cha kt qu ca cy phn tch lnh. Bng ny phi c to ra trc khi s dng cu lnh EXPLAIN PLAN.

Ph lc B Ti u cu lnh trn view Trong phn mm tra cu vn bn php qui

Phn mm Tra cu vn bn php qui dng tra cu vn bn ca UBND cc tnh v ca Vn phng chnh ph ban hnh bng WEB trn mng din rng ca Vn phng chnh ph. Mi vn bn c mt m vn bn, mt ch , mt m a phng, c ni dung trch yu v ni dung ton vn. Mt vn bn khi c pht hnh (gi l vn bn trin khai) th c th c da trn mt s vn bn khc gi l vn bn cn c. Trong CSDL mi a phng u cc View l hp (UNION ALL) ca cc c bng cha vn bn khng mt v vn bn mt ng thi c nh ca cc vn bn trn trung ng (cc Snapshot).

Hin ti CSDL ca tnh Ngh An (m a phng l NAN) c 4110 vn bn v tra cu ni dung ca mt vn bn vi h chng trnh cha ti u th thi gian p ng l 41.23 giy (Server IBM). Sau khi tin hnh phn tch cu lnh th im bt hp l ch do View c cha ton t tp hp UNION ALL v ch c cc iu kin AND trong mnh WHERE trong khi Oracle ch ti u cu lnh nh vy vi iu kin OR (xem phn ti u cu lnh trn View), do vy phi chuyn cu lnh truy xut trn View bng vic kt hp cu lnh vo View (truy xut trc tip vi bng ri hp cc kt qu). Cu lnh sau khi ti u c thi gian p ng l 2.36 giy (bng 5.7%). Di y l ni dung cu lnh tm ra vn bn cn c vn bn trin khai vi m vn bn v m a phng ang tra cu, ni dung cy phn tch lnh, thi gian thc hin c tnh ton bi h thng.

Cu lnh tm vn bn cn c khi cha ti u l 21.03 giy, cu lnh sau khi ti u c thi gian p ng l 1.26 giy (bng 4.8%). Cu lnh tm vn bn trin khai khi cha ti u l 18.99 giy, cu lnh sau khi ti u c thi gian p ng l 0.49 giy (bng 2.5%).

Cu lnh chn ra vn bn cn c khi cha ti u:

SELECT V_CCTHDP.MA_CC, V_CCTHDP.MA_DP_CC, V_VBCC.SO, V_VBCC.KY_HIEU, V_VBCC.NGAY_PH,

V_VBCC.TRICH_YEU, V_CCTHDP.MA_DP_VB, V_CCTHDP.MA_VB

FROMV_CCTHDP V_CCTHDP, V_VBTHDP V_VBCC, V_S_DMDP V_S_DMDP1, V_S_DMLVB V_S_DMLVB1,

V_S_DMCD V_S_DMCD1

WHERE V_VBCC.MA_VB = V_CCTHDP.MA_CC and V_VBCC.MA_DP = V_CCTHDP.MA_DP_CC

and V_S_DMDP1.MA_DP = V_VBCC.MA_DP and V_S_DMLVB1.MA_LOAI_VB = V_VBCC.MA_LOAI_VB

and V_S_DMCD1.MA_CHU_DE = V_VBCC.MA_CHU_DE

and (V_CCTHDP.MA_DP_VB = 'NAN') and (V_CCTHDP.MA_VB = 25);

Thi gian thc hincallcountcpuelapseddiskquerycurrentrows

----------------------------------------------------------------------------

Parse10.040.040000

Execute20.054.660030

Fetch10.6616.3335642924620

-----------------------------------------------------------------------

total 40.7521.0335642924650

Cy phn tch lnhRows Execution Plan

------- ---------------------------------------------------

0 SELECT STATEMENT GOAL: CHOOSE

0 MERGE JOIN

0 SORT (JOIN)

0 MERGE JOIN

0 SORT (JOIN)

0 MERGE JOIN

4110 SORT (JOIN)

4110 MERGE JOIN

56 SORT (JOIN)

56 TABLE ACCESS (FULL) OF 'SNAP$_S_DMCD'

4110 SORT (JOIN)

4110 VIEW OF 'V_VBTHDP'

4110 SORT (UNIQUE)

4110 UNION-ALL

5 TABLE ACCESS (FULL) OF 'VBDP'

4105 TABLE ACCESS (FULL) OF 'SNAP$_S_VBKM'

0 TABLE ACCESS (FULL) OF 'SNAP$_S_VBM'

0 SORT (JOIN)

0 VIEW OF 'V_CCTHDP'

0 SORT (UNIQUE)

0 UNION-ALL

0 TABLE ACCESS (BY ROWID) OF 'CCDP'

1 INDEX (RANGE SCAN) OF 'IDX_CCDP_VB_DPVB'

(NON-UNIQUE)

0 TABLE ACCESS (BY ROWID) OF 'SNAP$_S_CC'

1 INDEX (RANGE SCAN) OF 'IDX_S_CC_VB_DPVB'

(NON-UNIQUE)

0 SORT (JOIN)

0 TABLE ACCESS (FULL) OF 'SNAP$_S_DMLVB'

0 SORT (JOIN)

0 TABLE ACCESS (FULL) OF 'SNAP$_S_DMDP'

Cu lnh tm vn bn cn c sau khi ti u:

SELECT V_CCTHDP.MA_CC, V_CCTHDP.MA_DP_CC, VBDP.SO, VBDP.KY_HIEU, VBDP.NGAY_PH,

VBDP.TRICH_YEU, V_CCTHDP.MA_DP_VB, V_CCTHDP.MA_VB

FROM V_CCTHDP V_CCTHDP, VBDP VBDP, V_S_DMDP V_S_DMDP1,

V_S_DMLVB V_S_DMLVB1, V_S_DMCD V_S_DMCD1

WHERE (V_CCTHDP.MA_VB = 26) and (V_CCTHDP.MA_DP_VB = 'NAN')

and VBDP.MA_VB = V_CCTHDP.MA_CC and VBDP.MA_DP = V_CCTHDP.MA_DP_CC

and VBDP.MA_DP = V_S_DMDP1.MA_DP and VBDP.MA_LOAI_VB = V_S_DMLVB1.MA_LOAI_VB

and VBDP.MA_CHU_DE = V_S_DMCD1.MA_CHU_DE

UNION

SELECT V_CCTHDP.MA_CC, V_CCTHDP.MA_DP_CC, VBTW.SO, VBTW.KY_HIEU, VBTW.NGAY_PH,

VBTW.TRICH_YEU, V_CCTHDP.MA_DP_VB, V_CCTHDP.MA_VB

FROMV_CCTHDP V_CCTHDP, SNAP$_S_VBKM VBTW, V_S_DMDP V_S_DMDP1,

V_S_DMLVB V_S_DMLVB1, V_S_DMCD V_S_DMCD1

WHERE (V_CCTHDP.MA_VB = 26) and (V_CCTHDP.MA_DP_VB = 'NAN')

and VBTW.MA_VB = V_CCTHDP.MA_CC and VBTW.MA_DP = V_CCTHDP.MA_DP_CC

and VBTW.MA_DP = V_S_DMDP1.MA_DP and VBTW.MA_LOAI_VB = V_S_DMLVB1.MA_LOAI_VB

and VBTW.MA_CHU_DE = V_S_DMCD1.MA_CHU_DE

Thi gian thc hincallcountcpuelapseddiskquerycurrentrows

-----------------------------------------------------------------------

Parse10.120.162020

Execute20.000.000000

Fetch10.511.1046485064470

-----------------------------------------------------------------------

total40.631.2646685064490

Cy phn tch lnhRows Execution Plan

------- ---------------------------------------------------

0 SELECT STATEMENT GOAL: CHOOSE

0 SORT (UNIQUE)

0 UNION-ALL

0 MERGE JOIN

0 SORT (JOIN)

0 MERGE JOIN

0 SORT (JOIN)

0 MERGE JOIN

5 SORT (JOIN)

5 NESTED LOOPS

56 TABLE ACCESS (FULL) OF 'SNAP$_S_DMCD'

5 TABLE ACCESS (BY ROWID) OF 'VBDP'

61 INDEX (RANGE SCAN) OF 'VBDP_MA_CDE_I'

(NON-UNIQUE)

0 SORT (JOIN)

0 VIEW OF 'V_CCTHDP'

0 SORT (UNIQUE)

0 UNION-ALL

0 TABLE ACCESS (BY ROWID) OF 'CCDP'

1 INDEX (RANGE SCAN) OF 'IDX_CCDP_VB_DPVB'

(NON-UNIQUE)

0 TABLE ACCESS (BY ROWID) OF 'SNAP$_S_CC'

1 INDEX (RANGE SCAN) OF 'IDX_S_CC_VB_DPVB'

(NON-UNIQUE)

0 SORT (JOIN)

0 TABLE ACCESS (FULL) OF 'SNAP$_S_DMLVB'

0 SORT (JOIN)

0 TABLE ACCESS (FULL) OF 'SNAP$_S_DMDP'

0 MERGE JOIN

0 SORT (JOIN)

0 MERGE JOIN

0 SORT (JOIN)

0 MERGE JOIN

4105 SORT (JOIN)

4105 NESTED LOOPS

56 TABLE ACCESS (FULL) OF 'SNAP$_S_DMCD'

4105 TABLE ACCESS (BY ROWID) OF 'SNAP$_S_VBKM'

4161 INDEX (RANGE SCAN) OF 'S_VBKM_MA_CDE_I'

(NON-UNIQUE)

0 SORT (JOIN)

0 VIEW OF 'V_CCTHDP'

0 SORT (UNIQUE)

0 UNION-ALL

0 TABLE ACCESS (BY ROWID) OF 'CCDP'

1 INDEX (RANGE SCAN) OF 'IDX_CCDP_VB_DPVB'

(NON-UNIQUE)

0 TABLE ACCESS (BY ROWID) OF 'SNAP$_S_CC'

1 INDEX (RANGE SCAN) OF 'IDX_S_CC_VB_DPVB'

(NON-UNIQUE)

0 SORT (JOIN)

0 TABLE ACCESS (FULL) OF 'SNAP$_S_DMLVB'

0 SORT (JOIN)

0 TABLE ACCESS (FULL) OF 'SNAP$_S_DMDP'

Cu lnh tm ra vn bn trin khai khi cha ti u:

SELECT V_CCTKDP.MA_CC, V_CCTKDP.MA_DP_CC, V_CCTKDP.MA_DP_VB, V_CCTKDP.MA_VB, V_VBTK.SO,

V_VBTK.KY_HIEU, V_VBTK.NGAY_PH, V_VBTK.TRICH_YEU

FROM V_CCTHDP V_CCTKDP, V_VBTHDP V_VBTK, V_S_DMDP V_S_DMDP2,

V_S_DMLVB V_S_DMLVB2, V_S_DMCD V_S_DMCD2

WHERE V_VBTK.MA_VB = V_CCTKDP.MA_VB and V_VBTK.MA_DP = V_CCTKDP.MA_DP_VB

and V_S_DMDP2.MA_DP = V_VBTK.MA_DP and V_S_DMLVB2.MA_LOAI_VB = V_VBTK.MA_LOAI_VB

and V_S_DMCD2.MA_CHU_DE = V_VBTK.MA_CHU_DE

and (V_CCTKDP.MA_CC = 25) and (V_CCTKDP.MA_DP_CC = 'NAN');

Thi gian thc hincallcountcpuelapseddiskquerycurrentrows

------------- ------------------------------------------------ ----------

Parse10.040.040000

Execute20.013.990030

Fetch10.6914.9640442924700

-----------------------------------------------------------------------

total40.7418.9940442924730

Cu lnh tm vn bn trin khai sau khi ti uSELECTV_CCTKDP.MA_CC, V_CCTKDP.MA_DP_CC, V_CCTKDP.MA_DP_VB,

V_CCTKDP.MA_VB, VBDP.SO, VBDP.KY_HIEU, VBDP.NGAY_PH, VBDP.TRICH_YEU

FROM V_CCTHDP V_CCTKDP, VBDP VBDP, V_S_DMDP V_S_DMDP2,

V_S_DMLVB V_S_DMLVB2, V_S_DMCD V_S_DMCD2

WHERE (V_CCTKDP.MA_CC = 26) and (V_CCTKDP.MA_DP_CC = 'NAN')

and VBDP.MA_VB = V_CCTKDP.MA_VB and VBDP.MA_DP = V_CCTKDP.MA_DP_VB

and VBDP.MA_DP = V_S_DMDP2.MA_DP and VBDP.MA_LOAI_VB = V_S_DMLVB2.MA_LOAI_VB

and VBDP.MA_CHU_DE = V_S_DMCD2.MA_CHU_DE

UNION

SELECT V_CCTKDP.MA_CC, V_CCTKDP.MA_DP_CC, V_CCTKDP.MA_DP_VB,

V_CCTKDP.MA_VB, VBTW.SO, VBTW.KY_HIEU, VBTW.NGAY_PH, VBTW.TRICH_YEU

FROM V_CCTHDP V_CCTKDP, SNAP$_S_VBKM VBTW, V_S_DMDP V_S_DMDP2,

V_S_DMLVB V_S_DMLVB2, V_S_DMCD V_S_DMCD2

WHERE (V_CCTKDP.MA_CC = 26) and (V_CCTKDP.MA_DP_CC = 'NAN')

and VBTW.MA_VB = V_CCTKDP.MA_CC and VBTW.MA_DP = V_CCTKDP.MA_DP_VB

and VBTW.MA_DP = V_S_DMDP2.MA_DP and VBTW.MA_LOAI_VB = V_S_DMLVB2.MA_LOAI_VB

and VBTW.MA_CHU_DE = V_S_DMCD2.MA_CHU_DE ;

Thi gian thc hincallcountcpuelapseddiskquerycurrentrows

-----------------------------------------------------------------------

Parse10.050.050000

Execute20.000.000000

Fetch10.410.44285064470

-----------------------------------------------------------------------

total40.460.49285064470

Ph lc C gii thiu qu trnh ti u cu lnh kt ni trong phn mm tra cu vn bn php qui.

Sau khi phn tch qu trnh thc hin cc cu lnh SQL ca phn mm Tra cu vn bn php qui th trong cu phn tch lnh xut hin mt kt ni cha hp l gia Vn bn cn tra cu v Danh mc a phng cha tn a phng ban hnh vn bn.

L do: vic kt ni nhiu bng l s kt ni tng cp hai bng mt cho n khi tr thnh mt bng duy nht. Cc vn bn ca mt a phng u c mt m a phng duy nht trong khi ORACLE lun to cp kt ni gia bng VB v bng DMDP (Danh mc a phng) ly ra tn a phng ri mi chn theo m VB. Kt qu l phi tin hnh sp xp v duyt ton b ngun VB ca a phng ch ra.

Cch gii quyt: Ly tn a phng ng vi m a phng trong tham s vo ca procedure. Nh vy thi gian chuyn t thc hin php kt ni (1.16 giy) xung cn thc hin php chn (xp x 0 giy).

Cu lnh ban u:

SELECT V_CCTH.MA_VB, V_CCTH.MA_DP_VB, V_CCTH.MA_CC, V_CCTH.MA_DP_CC,

V_VBCC.SO, V_VBCC.KY_HIEU, V_VBCC.NGAY_PH, V_VBCC.TRICH_YEU

FROM V_CCTH V_CCTH, VB V_VBCC,DMDP DMDP1, DMLVB DMLVB1, DMCD DMCD1

WHERE V_VBCC.MA_VB = V_CCTH.MA_CC

and V_VBCC.MA_DP = V_CCTH.MA_DP_CC

and DMDP1.MA_DP = V_VBCC.MA_DP

and DMLVB1.MA_LOAI_VB = V_VBCC.MA_LOAI_VB

and DMCD1.MA_CHU_DE = V_VBCC.MA_CHU_DE

and (V_CCTH.MA_DP_VB = 'VPCP')

and (V_CCTH.MA_VB = 4404)

ORDER BY 7;

Thi gian thc hincall

countcpuelapseddiskquerycurrentrows

total51.141.16375859022

Rows Execution Plan

------- ---------------------------------------------------

0 SELECT STATEMENT GOAL: CHOOSE

2 SORT (ORDER BY)

2 NESTED LOOPS

2 NESTED LOOPS

5 HASH JOIN

2 VIEW OF 'V_CCTH'

2 SORT (UNIQUE)

2 UNION-ALL

3 INDEX (RANGE SCAN) OF 'CCTW_PK' (UNIQUE)

0 TABLE ACCESS (BY ROWID) OF 'SNAP$_S_CCDP_BTC'

1 INDEX (RANGE SCAN) OF 'I_S_CCBTC' (NON-UNIQUE)

4105 NESTED LOOPS

4105 TABLE ACCESS GOAL: ANALYZED (FULL) OF 'VB'

4105 INDEX (UNIQUE SCAN) OF 'DMDP_PK' (UNIQUE)

2 INDEX (UNIQUE SCAN) OF 'DMLVB_PK' (UNIQUE)

2 INDEX (UNIQUE SCAN) OF 'DMCD_PK' (UNIQUE)

Cu lnh ban u c chuyn i thnh hai cu lnh con nh sau

SELECT V_VBTH.MA_DP,DMDP.DATA_BASE,DMDP.PATH_TV,DMDP.TEN_DP,DMDP.VERSION,

V_VBTH.MA_LOAI_VB,DMLVB3.TEN_LOAI_VB,V_VBTH.MA_CHU_DE,DMCD3.MA_LOAI_CD,

DMCD3.TEN_CHU_DE,V_VBTH.SO,V_VBTH.KY_HIEU,V_VBTH.NGAY_PH,V_VBTH.NGUOI_KY,

V_VBTH.TRICH_YEU,V_VBTH.TOAN_VAN,V_VBTH.MA_VB

FROM V_VBTH V_VBTH,DMDP DMDP,DMCD DMCD3,DMLVB DMLVB3

WHERE V_VBTH.MA_VB = :b1 AND V_VBTH.MA_DP = :b2 AND DMDP.MA_DP = V_VBTH.MA_DP

AND DMCD3.MA_CHU_DE = V_VBTH.MA_CHU_DE AND DMLVB3.MA_LOAI_VB = V_VBTH.MA_LOAI_VB;

Thi gian thc hincallcountcpuelapseddiskquerycurrentrows

total30.000.00011219

Rows Execution Plan

------- ---------------------------------------------------

0 SELECT STATEMENT GOAL: CHOOSE

1 NESTED LOOPS

1 NESTED LOOPS

1 HASH JOIN

1 TABLE ACCESS (BY ROWID) OF 'DMDP'

2 INDEX (RANGE SCAN) OF 'DMDP_PK' (UNIQUE)

1 VIEW OF 'V_VBTH'

1 SORT (UNIQUE)

1 UNION-ALL

1 TABLE ACCESS GOAL: ANALYZED (BY ROWID) OF 'VB'

1 INDEX GOAL: ANALYZED (UNIQUE SCAN) OF 'VB_PK'

(UNIQUE)

11 TABLE ACCESS GOAL: ANALYZED (FULL) OF

'SNAP$_S_VBDP_BTC'

1 TABLE ACCESS (BY ROWID) OF 'DMCD'

1 INDEX (UNIQUE SCAN) OF 'DMCD_PK' (UNIQUE)

1 TABLE ACCESS (BY ROWID) OF 'DMLVB'

1 INDEX (UNIQUE SCAN) OF 'DMLVB_PK' (UNIQUE)

********************************************************************************

SELECT TEN_DP FROM DMDP DMDP WHERE DMDP.MA_DP = :b1;

callcountcpuelapseddiskquerycurrentrows

total30.000.000202

Rows Execution Plan

------- ---------------------------------------------------

0 SELECT STATEMENT GOAL: CHOOSE

1 TABLE ACCESS (BY ROWID) OF 'DMDP'

1 INDEX (UNIQUE SCAN) OF 'DMDP_PK' (UNIQUE)

Ph lc D Ti u ho bng s dng Index kt hp vi Hint Text Trong phn mm Tra cu Vn bn Php qui

Sau mt thi gian th nghim, phn tch kt qu t c v cha t c ca cc ln ti u cu lnh SQL trong phn mm Tra cu Vn bn php qui chng ti rt ra c phng thc ti u tt nht cho phn mm ny l s dng Index phc kt hp vi Hint Text.

S dng Index phc:

V phn mm ny s dng CSDL phn tn nm ri khp cc tnh, cc ngnh, cc b v ca Vn phng Chnh ph cho nn trong cc bng, cc Snapshot (cha d liu ca cc vn bn) c Index theo th t m a phng, m vn bn ri sau mi n cc ct khc nu c. iu ny s m bo trong cc View tng hp d liu t cc bng s c phn on ngang da trn m a phng, nh vy mi khi truy nhp n mt vn bn ca mt a phng no th Oracle s ch duyt trn on cha vn bn c m a phng ch ra.

S dng Hint Text:

Hint Text l nhng ch dn thi hnh bo cho Oracle bit thc hin cu lnh SQL theo cch mong mun. Trong phn mm Tra cu Vn bn php qui khi truy xut mt vn bn no u da trn m a phng v s vn bn. ly ra tn a phng pht hnh vn bn th phi kt ni bng cha vn bn vi bng cha danh mc cc a phng. R rng trong trng hp ny thc hin php chn trc sau ri thc hin php kt ni, tuy nhin Oracle lun kt ni gia bng cha cc vn bn v bng cha danh mc cc a phng qua m a phng trc php chn da trn m vn bn v m a a phng. iu ny rt bt hp l v ton b cc vn bn ca mt a phng u c cng mt m a phng do phi kt ni ton b cc vn bn ca a phng , trong khi nu thc hin php chn trc th ch ly ra duy nht mt vn bn ri kt ni vi danh mc a phng ly ra tn a phng pht hnh vn bn .

Do gii php khc phc l thm ch th thc hin kt ni ORDERD cc bng kt ni theo th t xut hin sau mnh FROM.

Nh vy sau khi kt hp c hai phng php trn th s ln duyt truy xut ti vn bn s l t nht (qua index trc tip) v s lng cc hng tham gia vo kt ni l nh nht (mt hng) do thi gian tng ln rt nhiu ln v thao tc kt ni t n vn bn (ton b vn bn ca mt a phng) cn li ch kt ni mt vn bn tm ra.

Di y l mt v d trong hng chc cu lnh nh vy.

Cu lnh cha c ti u

SELECT V_CCTH.MA_CC,V_CCTH.MA_DP_CC,V_VBCC.MA_LOAI_VB,V_VBCC.MA_CHU_DE,

V_VBCC.SO,V_VBCC.KY_HIEU,V_VBCC.NGAY_PH,V_VBCC.NGUOI_KY,V_VBCC.TRICH_YEU,

V_VBCC.TOAN_VAN,V_CCTH.MA_DP_VB,V_CCTH.MA_VB

FROM

V_CCTH V_CCTH,V_VBTH V_VBCC WHERE V_CCTH.MA_CC = :b1 AND V_CCTH.MA_DP_CC =

:b2 AND V_CCTH.MA_DP_VB = :b3 AND V_CCTH.MA_VB = :b4 AND V_VBCC.MA_VB =

V_CCTH.MA_CC AND V_VBCC.MA_DP = V_CCTH.MA_DP_CC

Thi gian thc hincall count cpu elapsed disk query current rows

------- ------ -------- ---------- ---------- ---------- ---------- ----------

Parse 1 0.02 0.02 0 0 0 0

Execute 2 0.06 11.09 0 0 2 6

Fetch 1 1.85 10.51 520 8245 1954 1

------- ------ -------- ---------- ---------- ---------- ---------- ----------

total 4 1.93 21.62 520 8245 1956 7

Cy phn tch lnhRows Execution Plan

------- ---------------------------------------------------

0 SELECT STATEMENT GOAL: CHOOSE

1 MERGE JOIN

4121 SORT (JOIN)

4121 VIEW OF 'V_VBTH'

4121 SORT (UNIQUE)

4121 UNION-ALL

4106 TABLE ACCESS (BY ROWID) OF 'VB'

4107 INDEX (RANGE SCAN) OF 'IH_VB_DPVB' (NON-UNIQUE)

15 TABLE ACCESS (BY ROWID) OF 'SNAP$_S_VBDP_BTC'

16 INDEX (RANGE SCAN) OF 'IH_S_BTC_DPVB' (NON-UNIQUE)

1 SORT (JOIN)

1 VIEW OF 'V_CCTH'

1 SORT (UNIQUE)

1 UNION-ALL

1 INDEX (UNIQUE SCAN) OF 'CCTW_PK' (UNIQUE)

0 TABLE ACCESS (BY ROWID) OF 'SNAP$_S_CCDP_BTC'

1 INDEX (RANGE SCAN) OF 'I_S_CCBTC' (NON-UNIQUE)

Cu lnh sau khi ti u

SELECT /*+ ORDERED */ V_CCTH.MA_CC,V_CCTH.MA_DP_CC,V_VBCC.MA_LOAI_VB,

V_VBCC.MA_CHU_DE,V_VBCC.SO,V_VBCC.KY_HIEU,V_VBCC.NGAY_PH,V_VBCC.NGUOI_KY,

V_VBCC.TRICH_YEU,V_VBCC.TOAN_VAN,V_CCTH.MA_DP_VB,V_CCTH.MA_VB

FROM

V_CCTH V_CCTH,V_VBTH V_VBCC WHERE V_CCTH.MA_CC = :b1 AND V_CCTH.MA_DP_CC =

:b2 AND V_CCTH.MA_DP_VB = :b3 AND V_CCTH.MA_VB = :b4 AND V_VBCC.MA_VB =

V_CCTH.MA_CC AND V_VBCC.MA_DP = V_CCTH.MA_DP_CC

Thi gian thc hincall count cpu elapsed disk query current rows

------- ------ -------- ---------- ---------- ---------- ---------- ----------

Parse 1 0.11 0.17 1 0 1 0

Execute 1 0.03 0.21 0 0 0 3

Fetch 1 0.00 0.02 1 6 0 1

------- ------ -------- ---------- ---------- ---------- ---------- ----------

total 3 0.14 0.40 2 6 1 4

Cy phn tch lnhRows Execution Plan

------- ---------------------------------------------------

0 SELECT STATEMENT GOAL: CHOOSE

1 HASH JOIN

1 VIEW OF 'V_CCTH'

1 SORT (UNIQUE)

1 UNION-ALL

1 INDEX (UNIQUE SCAN) OF 'CCTW_PK' (UNIQUE)

0 TABLE ACCESS (BY ROWID) OF 'SNAP$_S_CCDP_BTC'

1 INDEX (RANGE SCAN) OF 'I_S_CCBTC' (NON-UNIQUE)

1 VIEW OF 'V_VBTH'

1 SORT (UNIQUE)

1 UNION-ALL

1 TABLE ACCESS (BY ROWID) OF 'VB'

1 INDEX (UNIQUE SCAN) OF 'VB_PK' (UNIQUE)

0 TABLE ACCESS (BY ROWID) OF 'SNAP$_S_VBDP_BTC'

1 INDEX (RANGE SCAN) OF 'I_S_VBDP_BTC' (NON-UNIQUE)

H Ni - 1998

i hc quc gia h ni

Trng i Hc Khoa Hc T Nhin

Khoa Cng ngh Thng tin

Phn tch v ti u ho cu lnh SQL Trn H C s d liu ORACLE

Lun vn tt nghip c nhn khoa hc

Ngnh Tin hc M s: 01-02-10

Gio vin hng dn:

1. Ths Trn Xun Thun

2. Ths L Huy

Gio vin phn bin:

Ths o Kin Quc

ng Tiu Hng

PAGE Trang 1

_956388844.doc

merge join

sort

(join)

sort

(join)

Phng

(full)

NhnVin

(full)

_956388849.doc

S tng th CSDL phn tn ca ORACLE

b phn

hp thnh

cn trng

s dng

hp thnh

cp pht cho

C s d liu

ORACLE

Tablespace

hp thnh

b phn

b phn

hp thnh

Extent

hp thnh

Segment

Data

Index

Cluster

Rollback

Temporary

Cache

hp thnh

b phn

Cc file ca HH

Block

b phn

_956388852.doc

Dng khng chun ho

S quan h gia cc dng chun d liu

Dng chun th ba

(Third Normal Form - 3NF)

Dng chun th hai

(Second Normal Form - 2NF)

Dng chun th nht

(First Normal Form - 1NF)

_956735507.doc

OS

server

sql

Pl/sql

Cng c

ng dng

Oracle

D liu

Kin trc phn lp ca h CSDL ORACLE

_958884173.doc

AND_EQUAL ( Index Index

Index

Index

Index

)

_956388851.doc

X

A

Y

S thuc tnh quan h ph thuc bc cu

_956388847.docBng PhngMPhngTnPhngTP...10Bn hngTP HCM20Qun trTP H Ni

Bng NhnVinMNhnVinTnNhnVinMPhng...932KEHR20...1000SMITH101139WILSON20...1277NORMAN20...1321JONES10...1841WARD10...

Cluster Key(MPhng)10TnPhngTP...Bn hngTP HCM...MNhnVinTnNhnVin...1000SMITH...1321JONES...1841WARD...20TnPhngTP...Qun trTP H Ni...MNhnVinTnNhnVin...932KEHR...1139WILSON...1277NORMAN...

Bng khng ClusterCc d liu quan h c t tng phn, cn nhiu ch hn

Bng c ClusterCc d liu quan h c t cnh nhau to hiu qu hn

_956388848.doc

Offline Storage

Kin trc Server d liu ORACLE

Data Buffer Cache

CKPT

SMON

Data Files

Redo Log Files

ARCH

SGA

Shared Pool

Redo Log Buffer

Parameter Files

Control Files

RECO

LCKn

PMON

LGWR

DBWR

Server

User

Database Buffer Cache

_956388845.doc

nesloop

NhnVin

(Full)

Phng

(RowId)

pk_phong

(Range Scan)

_956388833.doc

*/

/*+

ch dn

ch thch

DELETE

SELECT

UPDATE

_956388837.doc

Bng 2

Bng n

Bng i

Bng 1

_956388840.doc

hash join

Phng

(full)

NhnVin

(cluster)

_956388841.doc

nested loop

Phng

(full)

NhnVin

(cluster)

_956388838.doc

B lc

1

Nested-loop

Truy nhp bng

(Duyt ton b)

BcLng

Truy nhp Index

(Kha duy nht)

pk_maphong

5

Truy nhp bng

(Bng ROWID)

Phng

Truy nhp bng

(Duyt ton b)

NhnVin

S cch thc hin cu lnh SQL trong ORACLE

4

3

2

6

_956388835.doc

Vng nh h thng SGA

Data Buffer Cache

SGA

Shared Pool

Redo Log Buffer

Database Buffer Cache

_956388836.doc

S minh ho xy dng li thc th

WAR_SUA_FK

CUST_BRN_FK

STR_WAR_FK

CUST_STR_FK

DIS_BRN_FK

SUA_DIS_FK

# * ID

* CUSTOMER_NO

* CONTRACT_NO

* STATUS

* NAME

* ADDRESS

o TELFAX

o IDCARD_NO

o SORT_NAME

* INST_ADDRESS

* STREET_ID

* WARD_CODE

* AREA_CODE

* DIST_CODE

* BRANCH_CODE

* HOUSE_NUM

o PERSON_NUM

* CCAT_ID

o CURRENCY_ID

o USAGE_LIST

o TOTAL_QUOTA

* PAYMENT_TYPE

o BANK_ACCOUNT

o BANK_OWNER

o BANK_NAME

* CONTRACT_DATE

o WSC_SIGNEDBY

* CP_CODE

o CREATED_BY

o CREATED_ON

o MODIFIED_BY

o MODIFIED_ON

o INACTIVE_BY

o INACTIVE_ON

o REACTIVE_BY

o REACTIVE_ON

CUSTOMERS

# * ID

* SUA_ID

* WARD_CODE

* NAME

o CREATED_BY

o MODIFIED_BY

o CREATED_ON

o MODIFIED_ON

WARDS (#)

# * ID

* DIS_ID

* AREA_CODE

* NAME

o CREATED_BY

o MODIFIED_BY

o CREATED_ON

o MODIFIED_ON

SUBAREA

# * ID

* BRN_ID

* DIST_CODE

* NAME

o CREATED_BY

o MODIFIED_BY

o CREATED_ON

o MODIFIED_ON

DISTRICTS (#)

# * ID

* BRANCH_CODE

* NAME

o CREATED_BY

o MODIFIED_BY

o CREATED_ON

o MODIFIED_ON

BRANCH (#)

# * ID

* WAR_ID

* STREET_CODE

* NAME

o CREATED_BY

o CREATED_ON

o MODIFIED_BY

o MODIFIED_ON

o DETAIL

STREETS

_956388834.doc

Truy nhp qua hm bm v qua Index

Bng NhnVin

MNhnVin

Cc ct khc ...

12917

...

13021

12981

...

11028

...

11021

...

11103

...

Cluster cha bng NhnVin

Hash Key

Cluster Key

237

MNhnVin

Ct khc ...

1297

...

1321

...

1298

...

238

...

11028

...

11021

...

11103

...

I/O

I/O

I/O

11103 - rowid

Index MNhnVin

I/O

I/O

SELECT ... FROM NhnVin WHERE MNhnVin=11103;

_956388829.doc

INDEX_DESC (

)

Index

--+

_956388831.doc

)

Index

INDEX (

--+

_956388832.doc

--+

ch dn

ch thch

DELETE

SELECT

UPDATE

_956388830.doc

INDEX_ASC (

)

Index

--+

_956388819.doc

Phn h I: Thc hin cc chc nng v qun tr h thng

Phn h II: Thc hin cc chc nng v qun l khch hng

Phn h III: Thc hin cc chc nng v qun l tnh cc v thu tin

Phn h IV: Thc hin cc chc nng v bo co tng hp

_956388825.doc

USE_HASH

(

)

_956388827.doc

(

USE_NL

)

_956388824.doc

(

USE_NL

)

_956388817.doc

S chc nng ca phn h II

BC Hp ng khch hng

BC thng tin khch hng

BC ng h theo a bn

Nc theo gi v ng h

Nc tiu th vt mc

Lit k dng h theo c

Chm thanh ton

Lit k ng h theo kiu

Bo co nh

gi khch hng

M vt t

i tng

s dng

Mc ch

s dng

Ngnh ngh hot ng

M s

thanh ton

n v

hnh chnh

LoI hnh

thi cng

M yu cu

v khiu ni

M thit b

Kiu v c

ng h

Trng thI

c s

Khuyn khch

khch hng

Pht

khch hng

Nhp vt t

Xut-Hon tr vt t

Nhp thit b

Cp nht

ng h

Yu cu v khiu ni

Kt qu x l

Tr gip x l

khiu nI, DV

Phc hi

dch v

To phiu

cng tc

Cp pht

thit b

Cp nht lnh thi cng

Cc dch v v ng h

Cc trng hp gian ln

Khch hng

ph

ng k mc

ch s dng

ng k

ngnh ngh

Ghi ch v

khch hng

Gn t

ho n

CI t

ng h

iu chnh

hp ng

Qun l khch hng

Vt t

nh gi

Danh mc

Bo co

ng k

khch hng

Dch v

_956388818.doc

S chc nng ca phn h I

i ngi

s dng

Cp nht d liu phn tn

ng k

ngi s dng

t tham s

h thng

Kt thc

Phn quyn truy nhp

i tng

s dng

Mc ch s dng

Ngnh ng hot ng

M s

thanh ton

n v

hnh chnh

Loi hnh

thi cng

M yu cu v khiu ni

t ho n

Loi tin

p dng

Biu gi

Biu gi

lu tin

Trng thI

c s

Kiu vi phm

Hnh thc pht

Tham s khch hng

Xy dng thang im

M vt t

M thit b

Kiu v c ng h

Nh my nc

c s

Thu tin

Thi cng

Ni dung

Gii thiu

H thng

Khch hng

Ho n

Thng pht

Vt t-Thit b

Nhn vin

Tr gip

Qun tr h thng

_956388815.doc

S chc nng ca phn h IV

Cc bo co thng tin khch hng

Cc bo co nh gi khch hng

Tnh hnh chm thanh ton

Lit k theo c v tnh trng

Lit k theo kiu v tnh trng

ng h c ci t theo c

ng h c ci t theo kiu

Bng k trng thi

Thu lng k

Bo co doanh thu theo biu gi

Bo co tng hp theo ho n

Bo co tng hp theo thc thu

Bo co n tn

Bo co tng hp hng thng

Bo co tng hp theo ho n

Bo co n tn ph thu

Phn tch lng nc tiu th

Bo co nc tiu th theo thng

Bo co nc tiu th theo giai on

Khch hng c nc tiu th ln

Bo co phn tch hng thng

Bo co

phn tch nm

Bo co

tng hp nm

Nc tiu th theo gi v ng h

Nc tiu th vt mc ng k

Bo co phn tch nc tht thot

Cp nht sn lng nc

ng h

Nc cung cp

Tin nc

Ph thu

Khch hng

Bo co tng hp

_956388816.doc

S chc nng ca phn h III

Phn khu

thu tin

Nhp thanh ton nhanh

Nhp thanh ton nhiu ln

Tnh hnh thanh ton

iu chnh

ho n

Khuyn khch

khch hng

Pht

khch hng

Gn t

ho n

Phn khu

c s

In s ghi ch

s ng h

Nhp ch s

ng h

Kim sot sai

lm c s

Nhp ch s

ng h nhanh

Thng tin

khch hng

Thng tin ci

t ng h

Thng tin ng

h chi tit

nh ngha dy

s ho n

T gi qui i

t gi t ng tnh ho n

Tnh ho n

Tnh li

ho n

In ho n

nh s

ho n

Pht hnh

ho n

Chuyn n

Phn ho n cho NV thu

X l khiu ni

Ct dch v

Phc hi

dch v

Chu k

ho n

Loi tin

p dng

Mc ch

s dng

Biu gi

Biu gi

lu tin

Tham s

khch hng

Trng thi

c s

Xy dng

thang im

Thang im ngm nh

Kim sot sai lm c s

Phn tch

nc tiu th

Bo co thng tin khch hng

Doanh thu theo biu gi

Khch hng tiu th ln

Nc tiu th vt mc

Nc theo gi v ng h

Thanh ton chm

Chi tit

khch hng

Cc bo co

chun thu

nh gi

khch hng

Ho n

Thu tin

nh gi

Danh mc

Bo co

Ch s ng h

Qun l tnh cc

v thu tin

_956388813.docM hnh tng th mng my tnh

BillingServer

AccountServer

FileServer

Si Gn

Th c

Ch Ln

Gia nh

Nh my nc

Cc phng, ban

DeveloperServer

_956388812.doc

S thc th ca phn mm Tra cu Vn bn php qui

TK_DMTK_FK

VB_DMLVB_FK

VB_DMDP_FK

VB_DMCD_FK

TK_VB_FK

DMCD_DMLCD_F

K

CCTW_VB_VB_FK

# * MA_VB

# * MA_CC

# * MA_DP_VB

# * MA_DP_CC

CCTW (#)

# * MA_CHU_DE

* TEN_CHU_DE

* MA_LOAI_CD

DMCD (#)

# * MA_DP

* TEN_DP

* HIEU_LUC

* NGAY_HL

o TEN_TAT

o DIA_CHI

o DIEN_THOAI

o FAX

* DATA_BASE

* PATH_TV

o VERSION

DMDP (#)

# * MA_LOAI_CD

* TEN_LOAI_CD

DMLCD (#)

# * MA_LOAI_VB

* TEN_LOAI_VB

DMLVB (#)

# * MA_TU_KHOA

* TEN_TU_KHOA

DMTK (#)

# * DATA_BASE

* MA_DP

* PATH_TV

* OPER_SYS

* VERSION

LMTW (#)

# * NKTW_ID

* THU_TU

* NGUOI_KY

NKTW (#)

# * MA_TU_KHOA

# * MA_VB

# * MA_DP

TK (#)

# * MA_DP

# * MA_VB

o EXT

o NOI_DUNG

TOAN_VAN (#)

# * MA_VB

# * MA_DP

* SO

* KY_HIEU

* XEM

* NGAY_PH

o NGUOI_KY

* TOAN_VAN

o TRICH_YEU

* MA_CHU_DE

* MA_LOAI_VB

VB (#)

o MA_VB

o MA_CC

o MA_DP_VB

o MA_DP_CC

V_CCTH

o MA_TU_KHOA

o MA_VB

o MA_DP

V_TKTH

o MA_VB

o NGUOI_KY

o SO

o KY_HIEU

o NGAY_PH

o TOAN_VAN

o TRICH_YEU

o MA_CHU_DE

o MA_LOAI_VB

o MA_DP

V_VBTH