phan tich va toi uu hoa cau lenh sql tren he csdl oracle
DESCRIPTION
Toi uu hoa cau lenh SQLTRANSCRIPT
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