LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
®¹i häc quèc gia hµ néi
Trêng §¹i Häc Khoa Häc Tù Nhiªn
Khoa C«ng nghÖ Th«ng tin
§Æng TiÓu Hïng
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
Trªn HÖ C¬ së d÷ liÖu ORACLE
LuËn v¨n tèt nghiÖp cö nh©n khoa häc
Ngµnh Tin häc M· sè: 01-02-10
Gi¸o viªn híng dÉn:
1. Ths TrÇn Xu©n ThuËn
2. Ths Lª Huy
Gi¸o viªn ph¶n biÖn:
Ths §µo KiÕn Quèc
Hµ Néi - 1998
Trang 0
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
Môc lôc
Môc lôc................................................................................................................................................
Lêi giíi thiÖu....................................................................................................................................
Ch¬ng I: HÖ CSDL quan hÖ vµ ng«n ng÷ hái cã cÊu tróc sql...........................
A - HÖ CSDL quan hÖ.....................................................................................
1. Quan hÖ vµ c¸c phÐp to¸n ®¹i sè quan hÖ.............................................
2. C¬ së d÷ liÖu..........................................................................................
3. M« h×nh CSDL quan hÖ.........................................................................
4. HÖ qu¶n trÞ CSDL ..................................................................................
5. HÖ tiªn ®Ò phô thuéc hµm......................................................................
6. C¸c d¹ng chuÈn trong CSDL quan hÖ...................................................
B. Giíi thiÖu vÒ Ng«n ng÷ hái cã cÊu tróc SQL...........................................
1. Kh¸i niÖm vÒ ng«n ng÷ SQL.................................................................
2. C¸c ®Æc ®iÓm cña ng«n ng÷ SQL..........................................................
3. C¸c lo¹i c©u lÖnh SQL thao t¸c víi d÷ liÖu
cÇn quan t©m khi tèi u................................................................................
Ch¬ng II: CSDL ph©n t¸n theo m« h×nh Client - Server cña Oracle............
A. Kh¸i niÖm vÒ CSDL ph©n t¸n...................................................................
B. M« h×nh xö lý Client-Server......................................................................
C. HÖ qu¶n trÞ CSDL Oracle..........................................................................
Ch¬ng III: Ph¬ng ph¸p tèi u ho¸ trong HÖ CSDL Oracle.....................................
A. C¸c kh¸i niÖm cÇn biÕt ®Ó tèi u ho¸.........................................................
1. Kh¸i niÖm vÒ tèi u ho¸...........................................................................
2. ChiÕn lîc tèi u trªn c¸c trªn c¸c biÓu thøc quan hÖ.............................
3. C¸c kiÓu ph©n líp trong CSDL Oracle..................................................
4. C¸c kiÓu kÕt nèi trong Oracle...............................................................
5. C¸c ph¬ng thøc truy nhËp d÷ liÖu.........................................................
6. C¸c luËt tèi u..........................................................................................
B. Ph©n tÝch c¸ch thi hµnh c©u lÖnh SQL......................................................
C. C¸c bíc tèi u ho¸.......................................................................................
1. §Þnh gi¸ biÓu thøc hoÆc ®iÒu kiÖn.........................................................
Trang 1
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
2. ChuyÓn d¹ng c©u lÖnh...........................................................................
3. Tèi u ho¸ c©u lÖnh truy nhËp trªn VIEW..............................................
4. Chän luËt ®Ó tèi u ho¸............................................................................
5. Chän ph¬ng thøc truy nhËp tíi hµng.....................................................
6. Chän thao t¸c kÕt nèi.............................................................................
D. KÕt luËn vÒ ph¬ng ph¸p tèi u trong Oracle..............................................
1. Tèi u b»ng viÖc thay ®æi c¸c thùc thÓ....................................................
2. Tèi u c¸c Table space.............................................................................
3. Tèi u vïng nhí hÖ thèng SGA...............................................................
4. Tèi u ho¸ sö dông Index........................................................................
5. Tèi u b»ng thay ®æi c©u lÖnh SQL.........................................................
6. Thªm c¸c chØ thÞ thùc hiÖn vµo trong c©u lÖnh.....................................
Ch¬ng IV: Giíi thiÖu vµ tèi u hãa c©u lÖnh SQL trong
hÖ tÝnh ho¸ ®¬n vµ qu¶n lý kh¸ch hµng c«ng ty cÊp níc TP HCM............
A. Giíi thiÖu vÒ hÖ ch¬ng tr×nh TÝnh ho¸ ®¬n vµ qu¶n lý kh¸ch hµng........
1. §Æt vÊn ®Ò...............................................................................................
2. Ph©n tÝch bµi to¸n..................................................................................
3. Gi¶i quyÕt bµi to¸n.................................................................................
B. C¸ch thøc t×m ra nh÷ng lÖnh cÇn tèi u trong phÇn mÒm.........................
C. Thùc hiÖn tèi u phÇn mÒm Qu¶n lý ho¸ ®¬n níc.....................................
1. Tèi u b»ng sö dông Index......................................................................
2. Tèi u b»ng thªm chØ thÞ thùc hiÖn vµ thay ®æi c©u lÖnh SQL...............
KÕt luËn..............................................................................................................................................
Tµi liÖu tham kh¶o.......................................................................................................................
Phô lôc.................................................................................................................................................
Phô lôc A: C¸c lÖnh ph©n tÝch ®èi tîng vµ ph©n tÝch c©u lÖnh..................
Phô lôc B: Tèi u c©u lÖnh trªn view
Trong phÇn mÒm tra cøu v¨n b¶n ph¸p qui..............................................................
Phô lôc C: giíi thiÖu qu¸ tr×nh tèi u c©u lÖnh kÕt nèi
trong phÇn mÒm tra cøu v¨n b¶n ph¸p qui..............................................................
Phô lôc D: Tèi u ho¸ b»ng sö dông Index kÕt hîp víi Hint Text
rong phÇn mÒm Tra cøu V¨n b¶n Ph¸p qui.................................................................
Trang 2
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
Trang 3
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
Lêi giíi thiÖu
Trong t×nh h×nh hiÖn nay c¸c doanh nghiÖp cã nhiÒu chi nh¸nh ®Æt ë
nhiÒu n¬i víi khèi lîng d÷ liÖu lín, ®a ngêi dïng, thêng sö dông c¬ së d÷ liÖu
ph©n t¸n. Do ®ã c¸c phÇn mÒm m¸y tÝnh hç trî nghiÖp vô kinh doanh cña c¸c
doanh nghiÖp còng ph¶i ®îc tæ chøc vµ sö dông hÖ ph©n t¸n mét c¸ch hîp lý.
Tuy nhiªn tèc ®é xö lý cña c¸c phÇn mÒm qu¶n lý cã khèi lîng d÷ liÖu
lín n»m ph©n t¸n sÏ trë nªn v« cïng chËm, kh«ng ®¸p øng ®îc c¸c yªu cÇu
cña ngêi sö dông. §iÒu nµy ®ßi hái c¸c nhµ ph¸t triÓn phÇn mÒm kh«ng
nh÷ng ph¶i x©y dùng ®îc nh÷ng phÇn mÒm lín, ®a ngêi dïng mµ cßn ph¶i
kh«ng ngõng nghiªn cøu vµ ®a ra c¸c gi¶i ph¸p tèi u ho¸ c©u lÖnh, nh»m tõng
bíc n©ng cao tèc ®é xö lý vµ gi¶m gi¸ thµnh cña phÇn mÒm.
Qua t×m hiÓu vµ nghiªn cøu qu¸ tr×nh x©y dùng mét sè phÇn mÒm lín ë
ViÖt Nam th× qu¸ tr×nh tèi u ho¸ c©u lÖnh cña c¸c HÖ ch¬ng tr×nh rÊt cã ý
nghÜa v× kinh phÝ ®Çu t cña c¸c doanh nghiÖp cho c¸c thiÕt bÞ phÇn cøng bíc
®Çu cßn rÊt h¹n chÕ. Cho nªn gi¶i ph¸p tèi u ho¸ ®Õn tõng c©u lÖnh cµng trë
nªn quan träng h¬n trong viÖc ®¶m b¶o sù tån t¹i vµ ph¸t triÓn cña phÇn mÒm.
§iÒu nµy lu«n lu«n cã ý nghÜa lín ngay c¶ khi c¸c yªu cÇu vÒ phÇn cøng ®îc
®¸p øng v× chØ cÇn mét c©u lÖnh kh«ng ®îc tèi u sÏ lµm t¨ng thêi gian ch¹y rÊt
nhá nhng khi trong hÖ ch¬ng tr×nh lín, ®a ngêi dïng th× c©u lÖnh ®ã cã thÓ ®îc thùc hiÖn lÆp l¹i nhiÒu lÇn vµ thêi gian t¬ng øng chung cña c¶ hÖ thèng sÏ
t¨ng lªn rÊt nhiÒu.
Trong qu¸ tr×nh tèi u ®èi víi mét phÇn mÒm, vÊn ®Ò ®Æt ra lµ lµm sao cã
thÓ c¶i thiÖn hiÖu suÊt cña phÇn mÒm trong ®iÒu kiÖn hiÖn cã vµ thêi gian thùc
thi kh«ng t¨ng lªn qu¸ nhanh khi d÷ liÖu t¨ng lªn nhiÒu (cã thÓ tõ hµng chôc
ngµn ®Õn hµng triÖu b¶n ghi).
§Ò tµi cña luËn v¨n lµ “Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL trªn HÖ
CSDL ORACLE”
LuËn v¨n bao gåm nh÷ng néi dung chÝnh nh sau:
1. HÖ CSDL vµ ng«n ng÷ SQL.
Trang 4
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
2. KiÕn tróc CSDL Oracle.
3. T×m hiÓu qu¸ tr×nh thùc hiÖn c©u lÖnh SQL vµ ®a ra mét sè nguyªn
nh©n lµm c©u lÖnh thùc hiÖn kÐm hiÖu qu¶.
4. C¸c ph¬ng ph¸p tèi u ho¸ c©u lÖnh SQL trªn CSDL Oracle.
5. Thùc hiÖn tèi u trªn HÖ tÝnh ho¸ ®¬n vµ qu¶n lý kh¸ch hµng cña c«ng
ty cÊp níc TP HCM, HÖ tra cøu V¨n b¶n ph¸p qui trªn Web.
Träng t©m cña luËn v¨n lµ ®Ò xuÊt c¶i tiÕn c¸c ph¬ng ph¸p tèi u ho¸ c©u
lÖnh SQL vµ c¸c c©y ph©n tÝch c©u lÖnh SQL nh»m ®a ra c¸c chØ môc (Index)
thÝch hîp, t¸c ®éng ®Õn qu¸ tr×nh thùc hiÖn lÖnh lµm t¨ng tèc ®é ch¬ng tr×nh.
Bíc ®Çu nh÷ng c¶i tiÕn mµ luËn v¨n ®Ò xuÊt ®· thu ®îc nh÷ng kÕt qu¶
®¸ng khÝch lÖ nh t¨ng tèc ®é thùc hiÖn lªn kho¶ng ba lÇn víi phÇn mÒm TÝnh
ho¸ ®¬n vµ t¨ng lªn hµng chôc lÇn ®èi víi phÇn mÒm tra cøu V¨n b¶n ph¸p
qui. H¬n thÕ nh÷ng kÕt qu¶ nghiªn cøu cña luËn v¨n vÒ ph¬ng ph¸p tèi u cã
thÓ dÔ dµng ¸p dông cho c¸c phÇn mÒm CSDL kh¸c.
Cuèi cïng em ch©n thµnh c¶m ¬n sù hç trî vµ híng dÉn tËn t×nh cña
thÇy gi¸o Hµ Quang Thôy, thÇy TrÇn Xu©n ThuËn, anh Lª Huy, anh Vò M¹nh
Cêng, chÞ Hoµng A Na cïng toµn thÓ c¸c thÇy gi¸o, c« gi¸o khoa C«ng NghÖ
Th«ng Tin, c¸c anh chÞ nh©n viªn C«ng ty CSE vµ c¸c b¹n ®· gióp ®ì em rÊt
nhiÒu trong qu¸ tr×nh thùc tËp, nghiªn cøu vÒ ®Ò tµi vµ hoµn thµnh luËn v¨n
nµy.
Hµ Néi - 1998
Trang 5
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
Ch¬ng I
HÖ c¬ së d÷ liÖu quan hÖ
vµ ng«n ng÷ hái cã cÊu tróc sql
A - HÖ c¬ së d÷ liÖu quan hÖ
1. Quan hÖ vµ c¸c phÐp to¸n ®¹i sè quan hÖ
1.1. Quan hÖ
Quan hÖ lµ mét tËp con cña tÝch §Ò-c¸c cña mét hoÆc nhiÒu miÒn. Nh vËy
mét quan hÖ cã thÓ lµ v« h¹n. ë ®©y lu«n lu«n gi¶ thiÕt r»ng quan hÖ lµ mét
tËp h÷u h¹n. Mçi hµng cña mét quan hÖ gäi lµ mét bé, khi ®ã quan hÖ lµ tËp
con cña tÝch §Ò-c¸c D1D2D3...Dn lµ quan hÖ n ng«i. Mçi bé cña quan
hÖ cã n thµnh phÇn (thêng hiÓu lµ n cét). C¸c cét cña quan hÖ gäi lµ c¸c thuéc
tÝnh. Cã thÓ ®Þnh nghÜa quan hÖ theo c¸ch h×nh thøc nh sau:
Gäi R=A1, A2, ..., An lµ tËp h÷u h¹n c¸c thuéc tÝnh, mçi thuéc tÝnh Ai
víi i=1, 2, ..., n cã miÒn gi¸ trÞ t¬ng øng lµ dom(Ai). Quan hÖ trªn tËp thuéc
tÝnh R= A1, A2, ..., An lµ tËp con cña tÝch §Ò-c¸c, r dom(A1) dom(A2)
... dom(An). Khi ®ã kÝ hiÖu r(R) hoÆc r(A1, A2, ..., An) lµ quan hÖ.
1.2. Kho¸ cña lîc ®å quan hÖ
Kho¸ (Key) cña quan hÖ r trªn tËp thuéc tÝnh R={A1, ...An} lµ tËp con
KR sao cho bÊt k× hai bé kh¸c nhau t1, t2 r lu«n tho¶ t1(K)t2(K).
§iÒu nµy cã nghÜa lµ lîc ®å quan hÖ kh«ng cã hai bé gièng nhau trªn mäi
thuéc tÝnh cña R.
1.3. C¸c phÐp to¸n ®¹i sè quan hÖ
Gäi r vµ s lµ quan hÖ trªn tËp thuéc tÝnh R={A1, A2,...,An} vµ
R1={B1,B2,...,Bn}.
Gi¶ thiÕt r»ng quan hÖ r, s lµ tËp h÷u h¹n c¸c bé. §èi víi c¸c phÐp hîp,
giao vµ trõ, hai quan hÖ tham gia ph¶i lµ kh¶ hîp.
Trang 6
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
Hîp cña hai quan hÖ
KÝ hiÖu hîp cña hai quan hÖ r vµ s lµ r s.
BiÓu diÔn h×nh thøc cã d¹ng: r s ={t/ts hoÆc tr hoÆc tr vµ s}
PhÐp giao
KÝ hiÖu giao cña hai quan hÖ r vµ s lµ r s.
BiÓu diÔn h×nh thøc cã d¹ng: r s ={t/tr vµ s}
PhÐp trõ
KÝ hiÖu r-s lµ tËp c¸c bé thuéc r nhng kh«ng thuéc s.
BiÓu diÔn h×nh thøc cã d¹ng: r-s={t/t r vµ t s}.
TÝch §Ò-c¸c trªn c¸c quan hÖ
TÝch §Ò-c¸c cña r vµ s lµ tËp (n*m) bé víi n thµnh phÇn ®Çu cã d¹ng mét
bé thuéc r vµ m thµnh phÇn sau cã d¹ng cña mét bé thuéc s. BiÓu diÔn h×nh
thøc cã d¹ng:
r s={t/t cã d¹ng (a1,a2,...,an,b1,b2,...,bn) trong ®ã (a1,a2,...,an r ) vµ
(b1,b2,...,bn s)}
PhÐp chiÕu
Gäi t lµ mét bé thuéc r, A R, t[A] lµ gi¸ trÞ cña bé t¹i thuéc tÝnh A,
X
R. Víi X={B1,B2,...,Bn} th× t[X]=(t[B1],t[B2],...,t[Bn]). PhÐp chiÕu trªn tËp
X cña quan hÖ r kÝ hiÖu lµ r[X] ®îc ®Þnh nghÜa nh sau:
r[X]={t[X]/t r}.
Thùc chÊt cña phÐp chiÕu lµ lo¹i bá ®i mét sè thuéc tÝnh vµ gi÷ l¹i nh÷ng
thuéc tÝnh cßn l¹i cña quan hÖ ®ã
PhÐp chän
Gi¶ sö F ®îc diÔn t¶ b»ng mét tæ hîp Boolean cña c¸c to¸n h¹ng, mçi
to¸n h¹ng lµ mét phÐp so s¸nh ®¬n gi¶n gi÷a hai biÕn lµ hai thuéc tÝnh, hoÆc
mét bªn lµ thuéc tÝnh mét bªn lµ h»ng, cho gi¸ trÞ "®óng" hoÆc "sai" ®èi víi
mçi bé ®· cho khi kiÓm tra riªng trªn bé ®Êy.
Trang 7
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
Trong F cã c¸c phÐp to¸n so s¸nh lµ {<, =, >, >=, <=, }, vµ c¸c phÐp
logic lµ {, , }.
BiÓu diÔn h×nh thøc cã d¹ng: ¬F(r)={t r F(t)=®óng}
PhÐp kÕt nèi
Gäi lµ mét trong c¸c phÐp so s¸nh =, >=, >, <, <=, <>, phÐp kÕt nèi ®îc ®Þnh nghÜa nh sau:
PhÐp kÕt nèi cña quan hÖ r ®èi víi thuéc tÝnh A víi quan hÖ s ®èi víi thuéc
tÝnh B lµ: r s = (tu)tr, us vµ tA uB
víi gi¶ thiÕt mçi gi¸ trÞ cña thuéc tÝnh tA ®Òu cã thÓ so s¸nh ®îc víi gi¸
trÞ cña thuéc tÝnh uB (qua phÐp so s¸nh ). Trêng hîp lµ dÊu "=" gäi lµ kÕt
nèi b»ng hay cßn gäi lµ kÕt nèi tù nhiªn. Khi ®ã kÕt nèi t¹i thuéc tÝnh cïng
tªn cña hai quan hÖ vµ mét trong hai thuéc tÝnh ®ã sÏ ®îc lo¹i bá qua phÐp
chiÕu.
PhÐp chia
Gäi r lµ quan hÖ n-ng«i vµ s lµ quan hÖ m-ng«i (n>m, s ). Khi ®ã phÐp
chia ®îc ®Þnh nghÜa nh sau:
PhÐp chia r s lµ tËp tÊt c¶ (n-m) bé t sao cho víi mäi bé u s
th× t u r.
2. C¬ së d÷ liÖu
C¬ së d÷ liÖu (CSDL) lµ m« h×nh thùc thÓ ph¶n ¸nh thÕ giíi thùc ®îc ®Ò
cËp ®Õn, do ®ã nã lµ sù trõu tîng ho¸ cña thÕ giíi thùc. CSDL lµ nguån d÷
liÖu cho mäi hÖ thèng th«ng tin dùa trªn m¸y tÝnh, nh÷ng d÷ liÖu nµy ®îc lu
gi÷ trong m¸y tÝnh ®îc tæ chøc dùa trªn mét qui ®Þnh nµo ®ã nh»m gi¶m thiÓu
®îc sù d thõa vµ ®¶m b¶o sù thèng nhÊt víi nhau (toµn vÑn d÷ liÖu).
Trong lÞch sö ph¸t triÓn cña CSDL cã 3 m« h×nh CSDL chÝnh ®îc sö dông
lµ:
M« h×nh ph©n cÊp: M« h×nh d÷ liÖu lµ mét c©y trong ®ã c¸c nót biÓu
diÔn c¸c tËp thùc thÓ, gi÷a c¸c nót con vµ c¸c nót cha ®îc liªn hÖ theo mét
mèi liªn hÖ x¸c ®Þnh.
M« h×nh m¹ng: M« h×nh ®îc biÓu diÔn lµ mét ®å thÞ cã híng.
Trang 8
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
M« h×nh quan hÖ: M« h×nh nµy dùa trªn c¬ së kh¸i niÖm lý thuyÕt tËp
hîp cña c¸c quan hÖ, tøc lµ tËp c¸c k-bé.
3. M« h×nh c¬ së d÷ liÖu quan hÖ
Kh¸i niÖm to¸n häc cña m« h×nh CSDL quan hÖ (hiÓu theo nghÜa lÝ thuyÕt
tËp hîp) th× quan hÖ lµ tËp con cña tÝch §Ò-c¸c (®îc gäi lµ miÒn). Gäi D1, D2,
D3..... Dn lµ n miÒn. TÝch §Ò-c¸c n miÒn lµ D1D2D3...Dn lµ tËp tÊt c¶ n
bé (v1,v2,v3,...,vn) sao cho viDi, víi i=1, 2, ..., n.
4. HÖ qu¶n trÞ c¬ së d÷ liÖu
HÖ ch¬ng tr×nh ®Ó cã thÓ qu¶n lý, tæ chøc lu tr÷, cho phÐp t×m kiÕm, thay
®æi, thªm bít d÷ liÖu trong CSDL ®îc gäi lµ HÖ qu¶n trÞ CSDL. HÖ qu¶n trÞ
CSDL cã nhiÖm vô rÊt quan träng lµ gióp ngêi dïng cã thÓ sö dông ®îc hÖ
thèng mµ Ýt nhiÒu kh«ng cÇn quan t©m tíi thuËt to¸n chi tiÕt hoÆc biÓu diÔn d÷
liÖu trong m¸y tÝnh .
5. HÖ tiªn ®Ò phô thuéc hµm
Kh¸i niÖm phô thuéc hµm trong mét quan hÖ lµ mét kh¸i niÖm rÊt quan
träng ®èi víi viÖc x©y dùng m« h×nh d÷ liÖu. Trong c¸c hÖ thèng th«ng tin
qu¶n lý khi cÇn thiÕt kÕ CSDL quan hÖ thêng ®ßi hái ph¶i chän lîc ®å c¸c
quan hÖ. ViÖc chän c¸c lîc ®å nµy tèt h¬n hay xÊu h¬n lîc ®å kh¸c ®îc dùa
trªn mét sè c¸c tiªu chuÈn cô thÓ nµo ®ã. Do ®ã cÇn ph¶i nghiªn cøu tÝnh chÊt
c¬ b¶n còng nh c¸c thuËt to¸n ®Ó cã thÓ nhËn ®îc nh÷ng tËp lîc ®å phï hîp.
Träng t©m cña c«ng viÖc nµy lµ xÐt ®Õn c¸c phô thuéc d÷ liÖu, nghÜa lµ c¸c
mèi rµng buéc cã thÓ cã hiÖn h÷u cña lîc ®å. Ch¼ng h¹n nh thuéc tÝnh nµy
x¸c ®Þnh duy nhÊt thuéc tÝnh kia. VÝ dô trong c«ng viÖc qu¶n lý tËp ho¸ ®¬n
th× m· ho¸ ®¬n x¸c ®Þnh duy nhÊt mét kh¸ch hµng thanh to¸n ho¸ ®¬n ®ã.
Cho R(U) lµ mét lîc ®å quan hÖ víi U = {A1, A2, ...An} lµ tËp hîp c¸c
thuéc tÝnh. Gi¶ sö cã X vµ Y lµ tËp con cña U.
Nãi r»ng X Y (X x¸c ®Þnh hµm Y hay Y phô thuéc vµo hµm X) nÕu
bÊt k× r lµ mét quan hÖ x¸c ®Þnh trªn R(U) sao cho bÊt k× hai bé t1, t2 r mµ
t1[X] = t2[X] th× t1[Y] = t2[Y]
Phô thuéc hµm kÝ hiÖu lµ FD. CÇn lu ý r»ng ë ®©y chØ xÐt c¸c phô thuéc
hµm tho¶ m·n cho mäi quan hÖ trªn lîc ®å t¬ng øng cña nã. Kh«ng thÓ xem
xÐt mét phô thuéc hµm tho¶ m·n quan hÖ r ®Æc biÖt (vÝ dô quan hÖ rçng) cña
mét lîc ®å R råi sau ®ã qui n¹p r»ng phô thuéc ®ã lµ tho¶ m·n trªn R.
Trang 9
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
VÝ dô: Mçi kh¸ch hµng tån t¹i võa ®óng víi mét gi¸ trÞ t¬ng øng víi tõng
thuéc tÝnh nh: Tªn kh¸ch hµng, ®Þa chØ ...v.v vµ cã thÓ viÕt nh sau:
kh¸ch hµng Tªn kh¸ch hµng, kh¸ch hµng §Þa chØ, ....
Gäi F lµ tËp hîp c¸c phô thuéc hµm ®èi víi lîc ®å quan hÖ R(U) vµ
XY lµ mét phô thuéc hµm, X, YU. Nãi r»ng X Y ®îc suy diÔn
logic tõ F nÕu mèi quan hÖ r trªn R(U) ®Òu tho¶ m·n c¸c phô thuéc hµm cña
F th× còng tho¶ X Y. Ch¼ng h¹n cã tËp phô thuéc hµm F = {A B,
B C} th× A C suy ra tõ F. Gäi F+ lµ bao ®ãng (Closure) cña F, tøc lµ
tËp tÊt c¶ c¸c phô thuéc hµm ®îc suy diÔn logic tõ F. NÕu F = F + th× F lµ hä
®Çy ®ñ (Full Family) cña phô thuéc hµm.
§Ó x¸c ®Þnh kho¸ cña lîc ®å quan hÖ vµ c¸c suy diÔn logic gi÷a c¸c phô
thuéc hµm cÇn thiÕt ph¶i tÝnh ®îc F+ tõ F. Do ®ã ®ßi hái ph¶i cã c¸c hÖ tiªn
®Ò. TËp c¸c qui t¾c ®îc Armstrong ®a ra n¨m 1974 vµ thêng ®îc gäi lµ hÖ tiªn
®Ò Armstrong.
Gäi R(U) lµ lîc ®å quan hÖ víi U = {A1, A2, ... An} lµ tËp c¸c thuéc tÝnh
vµ X, Y, Z U. HÖ tiªn ®Ò Armstrong bao gåm:
A1 (Ph¶n x¹): NÕu YX th× X Y
A2 (T¨ng trëng): NÕu ZU vµ X Y th× XZ YZ, trong ®ã kÝ
hiÖu XZ lµ hîp cña hai tËp hîp X, Z thay cho kÝ hiÖu XZ
A3 (B¾c cÇu): NÕu X Y vµ Y Z th× X Z
Víi nh÷ng lËp luËn trªn cã thÓ rót ra nh÷ng nhËn xÐt: Gi¶ sö F lµ tËp c¸c
phô thuéc hµm ®óng trªn quan hÖ r. NÕu X Y lµ mét phô thuéc hµm ®îc
suy dÉn tõ F nhê hÖ tiªn ®Ò Armstrong th× X Y lµ ®óng trªn quan hÖ r.
Nh÷ng kÕt luËn suy ra tõ hÖ tiªn ®Ò Armstrong:
a. LuËt hîp: NÕu X Y vµ X Z th× X YZ
b. LuËt tùa b¾c cÇu: NÕu X Y vµ WY Z th× WXZ
c. LuËt t¸ch: NÕu X Y vµ ZY th× X Z
Trang 10
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
6. C¸c d¹ng chuÈn trong CSDL quan hÖ
Do viÖc cËp nhËt d÷ liÖu (c¸c phÐp tÝnh nh thªm, lo¹i bá, thay ®æi) g©y
nªn nh÷ng dÞ thêng d÷ liÖu cho nªn c¸c quan hÖ cÇn thiÕt ph¶i ®îc biÕn ®æi
thµnh c¸c d¹ng phï hîp. Qu¸ tr×nh ®ã ®îc xem lµ qu¸ tr×nh chuÈn ho¸. Quan
hÖ ®îc chuÈn ho¸ lµ quan hÖ mµ trong ®ã mçi miÒn cña mét thuéc tÝnh chØ
chøa nh÷ng gi¸ trÞ nguyªn tè (Atomic) nghÜa lµ kh«ng ph©n nhá ®îc n÷a vµ
do ®ã mçi gi¸ trÞ trong quan hÖ còng lµ nguyªn tè.
Quan hÖ cã chøa c¸c miÒn gi¸ trÞ kh«ng nguyªn tè gäi lµ quan hÖ kh«ng
chuÈn ho¸. Mét quan hÖ ®îc chuÈn ho¸ cã thÓ thµnh mét hoÆc nhiÒu quan hÖ
chuÈn ho¸ kh¸c vµ kh«ng lµm mÊt m¸t th«ng tin.
Ba d¹ng chuÈn ho¸ thêng ®îc sö dông trong thiÕt kÕ CSDL quan hÖ
D¹ng kh«ng chuÈn ho¸
D¹ng chuÈn thø nhÊt
(First Normal Form - 1NF)
D¹ng chuÈn thø hai
(Second Normal Form - 2NF)
D¹ng chuÈn thø ba
(Third Normal Form - 3NF)
S¬ ®å quan hÖ gi÷a c¸c d¹ng chuÈn d÷ liÖu
1NF
Mét lîc ®å quan hÖ R ®îc gäi lµ ë d¹ng chuÈn mét (1NF) nÕu vµ chØ nÕu
toµn bé c¸c miÒn cã mÆt trong R ®Òu chØ chøa mét gi¸ trÞ nguyªn tè hay nãi
mét c¸ch kh¸c lîc ®å quan hÖ ph¶i tån t¹i kho¸.
§Þnh nghÜa nµy cho thÊy bÊt k× quan hÖ chuÈn nµo còng ë d¹ng 1NF.
Trang 11
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
2NF
Lîc ®å quan hÖ R ë d¹ng chuÈn thø hai nÕu nã ®· ë d¹ng chuÈn thø nhÊt
vµ nÕu mçi thuéc tÝnh kh«ng kho¸ cña R lµ phô thuéc hµm ®Çy ®ñ vµo kho¸
chÝnh.
3NF
Tríc khi ®a ra ®Þnh nghÜa cña d¹ng chuÈn 3NF, cÇn ®a thªm kh¸i niÖm
phô thuéc b¾c cÇu:
Cho mét lîc ®å quan hÖ R(U), X lµ tËp con cña c¸c thuéc tÝnh U vµ A lµ
mét thuéc tÝnh thuéc U. Thuéc tÝnh A ®îc gäi lµ phô thuéc b¾c cÇu vµo
X
trªn R nÕu tån t¹i mét tËp con Y cña sao cho X Y th× Y A nhng
Y/ X (vµ kh«ng x¸c ®Þnh hµm) víi A XY.
TÝnh b¾c cÇu cã thÓ ®îc biÓu diÔn theo s¬ ®å sau:
X
Y
A
S¬ ®å thuéc tÝnh quan hÖ phô thuéc b¾c cÇu
Qua s¬ ®å cã thÓ thÊy r»ng A cã thÓ x¸c ®Þnh hµm Y. Trong trêng hîp
A/ Y th× ®îc gäi lµ tÝnh b¾c cÇu chÆt.
TÝnh b¾c cÇu sÏ ®îc sö dông trong 3NF. §iÒu kiÖn A XY lµ cÇn thiÕt v×
nÕu A Y X th× theo luËt ph¶n x¹ lu«n cã X Y A. §iÒu kiÖn
Y/ X ®Ó lo¹i bá nhiÒu kho¸ khái d¹ng chuÈn 3NF. Còng nh ë 2NF viÖc
lo¹i bá phô thuéc b¾c cÇu ®i ®Õn 3NF còng nh»m lo¹i bá nh÷ng dÞ thêng g©y
ra do qu¸ tr×nh cËp nhËt d÷ liÖu vµo quan hÖ.
Tõ ®ã cã thÓ ®Þnh nghÜa d¹ng chuÈn 3NF nh sau:
Lîc ®å quan hÖ R ë d¹ng chuÈn thø ba (3NF) nÕu nã lµ 2NF vµ mçi thuéc
tÝnh kh«ng kho¸ cña R lµ kh«ng phô thuéc hµm b¾c cÇu vµo kho¸ chÝnh.
Trang 12
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
B. Giíi thiÖu vÒ Ng«n ng÷ hái cã cÊu tróc SQL
1. Kh¸i niÖm vÒ ng«n ng÷ SQL
Ng«n ng÷ xö lý d÷ liÖu quan hÖ lµ ng«n ng÷ bao gåm tËp c¸c chØ thÞ cho
phÐp hái, thay ®æi, thªm bít vµ söa th«ng tin cña mét CSDL.
Trong c¸c ng«n ng÷ thao t¸c d÷ liÖu SQL, SEQUEL, QUEL, QBE ...v.v th× ng«n
ng÷ SQL (Structure Query Language) lµ ng«n ng÷ hái ®¸p d÷ liÖu cã cÊu tróc,
phi thñ tôc, chuÈn mùc vµ ®iÓn h×nh ®îc x¸c nhËn lµ m¹nh, phæ dông l¹i dÔ sö
dông.
Ng«n ng÷ nµy ®îc ph¸t triÓn tõ ng«n ng÷ SEQUEL-2, thö nghiÖm vµ cµi ®Æt
t¹i trung t©m nghiªn cøu cña h·ng IBM (t¹i SALJOISE, CALIFONIA) cho hÖ thèng
qu¶n trÞ c¬ së d÷ liÖu lín ®iÓn h×nh lµ SYSTEM-R. Trong SYSTEM-R, SQL võa
®ãng vai trß lµ mét ng«n ng÷ cã thÓ thao t¸c ®éc lËp cña ngêi dïng ®Çu cuèi,
®ång thêi l¹i cã kh¶ n¨ng lµ mét ng«n ng÷ con ®îc nhóng trong ng«n ng÷ chñ
PL/1.
HiÖn nay ng«n ng÷ SQL ®· ®îc chuyÓn thµnh chuÈn chÝnh thøc cña ANSI
(ViÖn tiªu chuÈn MÜ) vµ ISO (C¬ quan tiªu chuÈn quèc tÕ) vµ ®îc rÊt nhiÒu c¸c
phÇn mÒm Qu¶n trÞ hÖ CSDL hç trî cho ng«n ng÷ nµy nh Oracle, NGRESS, DB2,
SYBASE, INFOMIC ...v.v.
2. C¸c ®Æc ®iÓm cña ng«n ng÷ SQL
§©y lµ mét ng«n ng÷ rÊt phï hîp cho CSDL ph©n t¸n theo m« h×nh
Client-Server, nã cho phÐp nhiÒu ngêi dïng cïng truy nhËp ®Õn mét c¬ së d÷
liÖu víi ®é an toµn æn ®Þnh vµ tÝnh b¶o mËt cao. Ng«n ng÷ SQL ®¶m b¶o lu lîng truyÒn th«ng tin trªn m¹ng tèi thiÓu v× Client chØ göi c©u hái vµ nhËn vÒ
kÕt qu¶ tõ Server chø kh«ng ph¶i göi c¶ CSDL ®i ®Ó xö lý. §Æc biÖt lµ do ®îc
c¸c hÖ qu¶n trÞ CSDL hç trî nªn ph¬ng thøc chung ®Ó giao tiÕp gi÷a c¸c phÇn
mÒm qu¶n trÞ CSDL (nh dïng ODBC) vµ ®iÒu nµy lµm cho hÖ thèng cã tÝnh
më. ThËt vËy, cã thÓ sö dông mét hÖ qu¶n trÞ CSDL tèt (®ßi hái cÊu phÇn cøng
m¹nh) nhng cã thÓ vÉn dïng phÇn mÒm yªu cÇu phÇn cøng thÊp trªn c¸c
Client hoÆc cã thÓ dïng c¸c m¸y NC (Net Computer). MÆt kh¸c còng cã thÓ
dïng nhiÒu hÖ qu¶n trÞ CSDL trong cïng mét hÖ thèng ®Ó khai th¸c c¸c thÕ
m¹nh cña chóng, vÝ dô cã thÓ dïng Lotus Notes trªn c¸c Client (giao diÖn ngêi dïng th©n thiÖn, u viÖt vÒ truyÒn th«ng, xö lý tèt v¨n b¶n) vµ kÕt nèi vµo
CSDL Oracle trªn Server (tÝnh b¶o mËt cao, ®a ngêi dïng, qu¶n lý tèt c¸c giao
t¸c-Transaction).
Trang 13
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
Ng«n ng÷ SQL cßn cã kh¶ n¨ng thùc hiÖn ®îc nh÷ng c©u hái phøc t¹p mµ
c¸c d¹ng ng«n ng÷ kh¸c kh«ng ®¸p øng ®îc vµ mét c©u lÖnh SQL cã thÓ thay
thÕ cho mét tËp hîp c¸c c©u lÖnh lËp tr×nh CSDL th«ng thêng.
Ngoµi c¬ cÊu xö lý d÷ liÖu SQL cßn cã c¸c c«ng cô ®Ó x©y dùng c¸c øng
dông WEB, cã kh¶ n¨ng xö lý d÷ liÖu, t¹o b¸o c¸o, thiÕt kÕ m« h×nh d÷ liÖu vµ
qu¶n trÞ hÖ thèng.
3. C¸c lo¹i c©u lÖnh SQL thao t¸c víi d÷ liÖu cÇn quan t©m
khi tèi u
Trong ng«n ng÷ SQL cã hai lo¹i lÖnh thao t¸c víi d÷ liÖu, ®ã lµ:
C¸c lÖnh ®Þnh nghÜa d÷ liÖu DDL (Data Defined Language): lµ c¸c
lÖnh t¹o b¶ng, t¹o Index ...v.v
C¸c lÖnh cËp nhËt d÷ liÖu DML (Data Manipulation Language) nh
SELECT, UPDATE, INSERT, DROP.
C¸c lÖnh cËp nhËt d÷ liÖu ®îc sö dông thêng xuyªn cho nªn cÇn thiÕt ph¶i
t×m ra ph¬ng ¸n chän c¸ch viÕt c©u lÖnh, c¸ch thùc hiÖn c©u lÖnh sao cho cã
hiÖu qu¶ nhÊt vÒ mÆt thêi gian còng nh lµ vÒ kh«ng gian lu tr÷. Oracle cã thÓ
tèi u c¸c lo¹i c©u lÖnh sau:
1. C©u lÖnh ®¬n: Mét c©u lÖnh ®¬n lµ mét c©u lÖnh INSERT, UPDATE, DELETE
hoÆc SELECT thao t¸c duy nhÊt trªn mét b¶ng.
2. Query ®¬n: thùc chÊt lµ mét c©u lÖnh SELECT (cã thÓ víi nhiÒu b¶ng).
3. KÕt nèi: Mét kÕt nèi lµ mét truy vÊn d÷ liÖu nhiÒu h¬n mét b¶ng vµ tõ
kÕt nèi gi÷a c¸c b¶ng n»m trong mÖnh ®Ò FROM. PhÐp kÕt nèi kÐo d÷ liÖu tõ
c¸c b¶ng kh¸c nhau vµ so s¸nh chóng tõng ®«i t¹i dßng chung ë tÊt c¶ c¸c
b¶ng
Cã c¸c kiÓu kÕt nèi sau:
Liªn kÕt ngang b»ng (Equijoins) liªn kÕt nµy dùa vµo sù c©n b»ng cña
®iÒu kiÖn t×m kiÕm mµ chØ ra mèi quan hÖ gi÷a 2 b¶ng.
Liªn kÕt kh«ng ngang b»ng (Non-Equijoins) lµ liªn kÕt 1 b¶ng nµy víi
mét b¶ng kh¸c dùa trªn sù so s¸nh kh«ng b»ng nh to¸n tö <=, >=, BETWEEN
...v.v.
Trang 14
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
Liªn kÕt ngoµi (Outer joins): Gi¶ sö cã 2 b¶ng Kh¸chHµng vµ
Ho¸§¬ncïng cã 2 cét lµ M·Kh¸chHµng. Khi liªn kÕt 2 b¶ng cho hiÖn lªn tªn
cña nh÷ng kh¸ch hµng cã sè thø tù trïng nhau. NÕu muèn hiÖn lªn c¶ nh÷ng
kh¸ch hµng kh«ng tho¶ m·n trong b¶ng Kh¸chHµng còng ®îc hiÖn lªn th× cÇn
dïng liªn kÕt ngoµi .
Liªn kÕt víi chÝnh nã (Self joins): §©y lµ kiÓu liªn ®Æc biÖt gi÷a
mét b¶ng víi chÝnh nã nh 2 b¶ng riªng biÖt . §Ó lµm ®îc viÖc nµy th×
b¶ng ®ã ph¶i cã mét tªn quan hÖ.
4. TÝch §Ò-c¸c: lµ kÕt qu¶ cña viÖc nh©n hai tËp hîp.
5. C©u lÖnh phøc: Mét c©u lÖnh phøc nh lµ mét c©u lÖnh SELECT, INSER,
UPDATE, hoÆc DELETE cã chøa mét c©u lÖnh SELECT kh¸c (®îc gäi lµ subquery).
6. C¸c query kÕt hîp: Mét query kÕt hîp lµ mét query cã sö dông c¸c to¸n
tö tËp hîp nh UNION, UNION ALL, INTERSECT hoÆc MINUS.
7. c©u lÖnh sö dông View: View lµ mét b¶ng logic mµ thùc chÊt lµ mét c©u
lÖnh SELECT mµ cã thÓ thao t¸c gièng nh ®èi víi b¶ng.
8. C©u lÖnh ph©n t¸n: nghÜa lµ c©u lÖnh truy nhËp d÷ liÖu tõ xa.
Trang 15
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
Ch¬ng II
CSDL ph©n t¸n theo m« h×nh Client - Server
cña Oracle
A. Kh¸i niÖm vÒ CSDL ph©n t¸n
Mét CSDL ph©n t¸n lµ mét tËp hîp d÷ liÖu mµ vÒ mÆt logic tËp d÷ liÖu nµy
thuéc vÒ mét hÖ thèng, nhng ®îc tr¶i trªn c¸c vÞ trÝ (kh¸c nhau) cña mét m¹ng
m¸y tÝnh.
Chó ý r»ng ph©n t¸n cã nghÜa lµ d÷ liÖu kh«ng c tró trªn mét vÞ trÝ (kh¸c
víi CSDL tËp trung, ®¬n lÎ) vµ ph¶i cã t¬ng quan logic víi nhau (d÷ liÖu cã
mét sè c¸c thuéc tÝnh rµng buéc chóng víi nhau) chø kh«ng ph¶i lµ mét tËp
hîp CSDL côc bé hoÆc c¸c tÖp c tró t¹i c¸c vÞ trÝ kh¸c nhau trong mét m¹ng
m¸y tÝnh.
Tuy viÖc qu¶n trÞ mét hÖ thèng CSDL ph©n t¸n sÏ gÆp nhiÒu khã kh¨n h¬n
so víi hÖ CSDL tËp trung nhng xu híng x©y dùng c¸c hÖ CSDL ph©n t¸n ngµy
cµng ph¸t triÓn vµ cã nhiÒu øng dông trong thùc tÕ v× c¸c nguyªn nh©n sau:
XuÊt ph¸t tõ chÝnh yªu cÇu thùc tÕ vÒ tæ chøc vµ kinh tÕ: Trªn thùc tÕ nhiÒu tæ
chøc lµ kh«ng tËp trung, d÷ liÖu ngµy cµng lín vµ phôc vô cho ®a ngêi dïng
n»m ph©n t¸n v× vËy CSDL ph©n t¸n lµ thÝch hîp víi cÊu tróc tù nhiªn cña c¸c
tæ chøc ®ã. §©y lµ mét trong c¸c yÕu tè quan träng thóc ®Èy viÖc ph¸t triÓn
CSDL ph©n t¸n.
Mét vÝ dô minh ho¹ cho vÊn ®Ò nµy lµ hÖ thèng b¸n vÐ m¸y bay thèng
nhÊt trªn toµn thÕ giíi. Mçi h·ng hµng kh«ng cã mét hÖ CSDL riªng, cã sù
qu¶n lý riªng vµ kh«ng thÓ cã lý do nµo ®Ó CSDL nµy tËp trung ë mét chç.
MÆt kh¸c c¸c h·ng hµng kh«ng l¹i cã hîp t¸c víi nhau trong viÖc b¸n vÐ phôc
vô hµnh kh¸ch cho nh÷ng tuyÕn ®êng thuéc ph¹m vi qu¶n lý cña nhiÒu h·ng.
Do vËy hÖ thèng d÷ liÖu vÒ chuyÕn bay cña c¸c h·ng hµng kh«ng chÝnh lµ mét
hÖ CSDL ph©n t¸n ®îc qu¶n lý thèng nhÊt t¹i trung t©m ®iÒu khiÓn bay ®Æt t¹i
Mü.
Sù liªn kÕt c¸c CSDL ®ang tån t¹i: CSDL ph©n t¸n lµ gi¶i ph¸p tù nhiªn
khi cã c¸c CSDL ®ang tån t¹i vµ sù cÇn thiÕt thùc hiÖn x©y dùng mét øng
dông toµn côc. Trong trêng hîp nµy CSDL ph©n t¸n ®îc t¹o tõ díi lªn
(Bottom-up) tõ c¸c CSDL ®· tån t¹i tríc ®ã. Qu¸ tr×nh nµy cã thÓ ®ßi hái
CSDL ph¶i cÊu tróc l¹i côc bé ë mét møc ®é nhÊt ®Þnh. Dï sao, nh÷ng söa ®æi
nµy lµ nhá h¬n rÊt nhiÒu so víi viÖc t¹o lËp mét CSDL tËp trung hoµn toµn
míi.
Trang 16
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
Sù ph¸t triÓn më réng: C¸c tæ chøc cã thÓ më réng b»ng c¸ch thªm c¸c
®¬n vÞ míi, võa cã tÝnh tù trÞ võa cã quan hÖ t¬ng ®èi víi c¸c tæ chøc kh¸c.
Khi ®ã CSDL ph©n t¸n hç trî sù më réng tæ chøc mét c¸ch uyÓn chuyÓn víi
mét møc ®é ¶nh hëng tèi thiÓu tíi c¸c ®¬n vÞ ®ang tån t¹i. Víi CSDL tËp
trung, còng cã thÓ khëi t¹o kÝch thíc lín cho viÖc më réng tæ chøc trong t¬ng
lai. §iÒu ®ã rÊt khã ®¸nh gi¸ vµ chi phÝ thùc hiÖn sÏ lín, hoÆc viÖc më réng tæ
chøc sÏ cã ¶nh hëng lín kh«ng chØ trªn c¸c øng dông míi mµ cßn trªn c¸c
øng dông cò ®ang tån t¹i.
Lµm gi¶m tæng chi phÝ t×m kiÕm: Trªn thùc tÕ nhiÒu øng dông côc bé râ
rµng lµm gi¶m tæng chi phÝ truyÒn th«ng trªn ph¬ng diÖn mét CSDL tËp trung.
Bëi vËy mét trong c¸c môc ®Ých chÝnh trong thiÕt kÕ CSDL ph©n t¸n lµ t¹o tèi
®a c¸c vÞ trÝ øng dông.
Sù quan t©m hiÖu suÊt (Performance Considerations): S tån t¹i mét vµi bé
xö lý tù trÞ ®a ®Õn kÕt qu¶ t¨ng hiÖu suÊt th«ng qua mét møc ®é song song
cao. Sù quan t©m nµy chØ cã thÓ ®îc øng dông cho mét hÖ thèng ®a xö lý
kh«ng nhÊt thiÕt ph¶i lµ mét hÖ CSDL ph©n t¸n. Dï sao, CSDL ph©n t¸n cã lîi
trong sù ph©n t¸n d÷ liÖu ph¶n ¸nh c¸c tiªu chuÈn phô thuéc øng dông vµ sè
tèi ®a vÞ trÝ c¸c øng dông. B»ng ph¬ng ph¸p nµy sÏ gi¶m tèi thÓu sù g©y trë
ng¹i lÉn nhau gi÷a c¸c bé xö lý. Träng t¶i ®îc chia sÎ gi÷a c¸c bé xö lý, vµ
c¸c t¾c nghÏn nguy kÞch, nh t¾c nghÏn m¹ng truyÒn th«ng, t¾c nghÏn dÞch vô
chung cho toµn bé hÖ thèng sÏ ®îc tr¸nh. KÕt qu¶ nµy lµ mét hÖ qu¶ cña ®ßi
hái kh¶ n¨ng xö lý tù trÞ cho c¸c øng dông côc bé ®· ®îc ph¸t biÓu trong ®Þnh
nghÜa CSDL ph©n t¸n.
TÝnh tin cËy vµ tÝnh s½n sµng: CSDL ph©n t¸n, ®Æc biÖt víi d÷ liÖu d thõa,
còng ®îc sö dông ®Ó ®¹t ®îc mét sù tin cËy vµ tÝnh s½n sµng cao h¬n. §Ó ®¹t
®îc môc ®Ých nµy còng gÆp mét sè trë ng¹i vµ ph¶i gi¶i quyÕt b»ng viÖc sö
dông c¸c kü thuËt vÉn cha ®îc hoµn thiÖn. B¶n th©n kh¶ n¨ng xö lý tù trÞ cña
c¸c vÞ trÝ kh¸c nhau trong CSDL ph©n t¸n còng kh«ng b¶o ®¶m tÝnh tin cËy
cao cña hÖ thèng, nhng nã ®¶m b¶o h¹n chÕ sù ®æ vì toµn bé hÖ thèng. C¸c sù
cè trong CSDL ph©n t¸n cã thÓ thêng xuyªn h¬n mét CSDL tËp trung v× cã sè
lîng thµnh phÇn lín h¬n, nhng hËu qu¶ chØ ¶nh hëng tíi c¸c øng dông sö
dông d÷ liÖu cña vÞ trÝ cã sù cè vµ viÖc ®æ vì toµn bé hÖ thèng lµ hiÕm x¶y ra.
B. M« h×nh xö lý Client-Server
M« h×nh xö lý Client-Server lµ mét m« h×nh liªn quan ®Õn viÖc xö lý hîp
t¸c ®èi víi c¸c yªu cÇu tõ Client (hoÆc ngêi yªu cÇu) ®îc m¸y Server tiÕn
hµnh xö lý vµ göi tr¶ kÕt qu¶ vÒ cho Client.
Trong khi c¸c hÖ ph©n t¸n lµ hiÖn tîng t¬ng ®èi míi th× ph©n t¸n ë møc hÖ
®iÒu hµnh ®· ®îc hiÓu kh¸ têng tËn vµ ®îc dïng réng r·i. VÝ dô ph©n t¸n c¸c
Trang 17
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
chøc n¨ng sè häc vµ vµo/ra, ph©n t¸n c¸c chøc n¨ng hÖ ®iÒu hµnh cho nhiÒu
CPU trong bé ®a xö lý cña IBM 3090/600 (s¸u bé xö lý).
HÖ ph©n t¸n ®· tiÕn ho¸ tõ m«i trêng nguyªn thuû nhÊt ®Ó hç trî cho xö lý
øng dông. ChÝnh m«i trêng xö lý dùa trªn Server cha cã kh¶ n¨ng xö lý øng
dông ph©n t¸n. ViÖc xö lý øng dông trªn Server ®îc thùc hiÖn trªn mét hÖ
thèng m¸y tÝnh cã g¾n c¸c thiÕt bÞ “c©m” kh«ng th«ng minh. Mét m¸y PC
®¬n lÎ hay m¸y lín IBM víi c¸c thiÕt bÞ cuèi dùa trªn hiÓn thÞ kÝ tù lµ mét thÝ
dô vÒ m«i trêng xö lý dùa trªn Server. Theo quan ®iÓm øng dông th× xö lý trªn
Server hoµn toµn kh«ng ph©n t¸n.
ViÖc xö lý hîp t¸c Client-Server thùc tÕ lµ mét d¹ng riªng cña xö lý ph©n
t¸n víi tµi nguyªn (vµ nhiÖm vô ¶nh hëng tíi tµi nguyªn) ®îc tr¶i qua hai hay
nhiÒu hÖ thèng tÝnh to¸n rêi r¹c.
M« h×nh xö lý Client-Server ®· næi lªn nh mét møc cao h¬n cña viÖc xö lý
dïng chung thiÕt bÞ ®· cã trong m¹ng côc bé (LAN). ThÝ dô trong m«i trêng
xö lý dïng chung thiÕt bÞ, c¸c m¸y tÝnh c¸ nh©n (PC) ®îc g¾n víi thiÕt bÞ hÖ
thèng víi môc ®Ých cho phÐp c¸c PC nµy dïng chung tµi nguyªn tÖp trªn ®Üa
cøng vµ m¸y in. Theo thuËt ng÷ LAN, c¸c thiÕt bÞ dïng chung nh vËy ®îc gäi
lµ c¸c phôc vô (Server). Tªn phôc vô lµ thÝch hîp h¬n c¶ v× c¸c thiÕt bÞ dïng
chung nµy dïng ®Ó nhËn c¸c yªu cÇu cÇn phôc vô tõ c¸c PC cho c¸c chøc
n¨ng thÊp, tæng qu¸t. Trong xö lý dïng chung thiÕt bÞ trªn LAN, c¸c yªu cÇu
cña PC nµy thêng bÞ giíi h¹n vÒ c¸c dÞch vô liªn quan tíi tÖp dïng chung hay
tÖp xö lý in. Nhîc ®iÓm hiÓn nhiªn cña c¸ch tiÕp cËn nh vËy lµ ë chç mäi xö
lý øng dông ®Òu ®îc thùc hiÖn trªn c¸c PC ®¬n lÎ, vµ chØ mét sè chøc n¨ng
nµo ®ã (in, vµo ra tÖp) míi lµ ph©n t¸n. Do ®ã, toµn bé tÖp ph¶i ®îc göi cho
mét PC ®· ban ra yªu cÇu READ tÖp ®ã. NÕu tÖp ®îc cËp nhËt th× toµn bé tÖp
®ã bÞ kho¸ bëi PC ®· ban ra yªu cÇu cËp nhËt tÖp ®ã.
ChÝnh v× c¸c lý do trªn mµ m« h×nh xö lý Client-Server lµ viÖc më réng tù
nhiªn cña viÖc dïng chung thiÕt bÞ vµ c¸c tr¹m lµm viÖc ®ãng vai trß kh¸ch
cña m¸y chñ. PhÇn cã ý nghÜa nhÊt cña m« h×nh nµy lµ xö lý øng dông ®îc
ph©n chia (kh«ng nhÊt thiÕt ph¶i chia ®Òu) gi÷a Client vµ Server. Xö lý thùc tÕ
®îc khëi ®Çu vµ kiÓm so¸t mét phÇn bëi n¬i yªu cÇu dÞch vô lµ Client nhng
kh«ng ph¶i theo kiÓu chñ-tí. Thay v× vËy, c¶ Client vµ Server ®Òu hîp t¸c ®Ó
thùc hiÖn thµnh c«ng øng dông. Ch¼ng h¹n nÕu PC ch¹y ch¬ng tr×nh cÇn mét
b¶n ghi ®Æc biÖt nµo ®ã tõ mét tÖp dïng chung th× nã sÏ chuyÓn yªu cÇu cho
Server CSDL tiÕn hµnh xö lý côc bé råi nhËn nhËn l¹i ®óng b¶n ghi ®· yªu
cÇu.
VÒ mÆt kiÕn tróc xö lý Client-Server cã c¸c ®Æc tÝnh:
§êng liªn l¹c tin cËy, ch¾c ch¾n gi÷a Client vµ Server.
Trang 18
LuËn v¨n tèt nghiÖp:
Ph©n tÝch vµ tèi u ho¸ c©u lÖnh SQL
C¸c Client khëi xíng t¬ng t¸c Client-Server.
Ph©n t¸n xö lý øng dông gi÷a Client vµ Server.
Server kiÓm so¸t c¸c dÞch vô do Client yªu cÇu.
Server lµm träng tµi cho c¸c yªu cÇu tranh chÊp.
C¸c u ®iÓm cña m« h×nh Client-Server:
Ph¸t huy ®îc søc m¹nh n¨ng lùc c«ng nghÖ tÝnh to¸n cña PC. C¸c PC
ngµy nay víi gi¸ thµnh nhá ®· cung cÊp mét n¨ng lùc tÝnh to¸n ®¸ng kÓ mµ
tríc ®©y c¸c m¸y tÝnh lín míi cã ®îc.
Cho phÐp xö lý ®îc thùc hiÖn t¹i gÇn nguån d÷ liÖu cÇn xö lý (c¸c CSDL
trªn Server). Do ®ã lu lîng (vµ thêi gian ®¸p øng) cña m¹ng gi¶m ®i rÊt nhiÒu,
hiÖu n¨ng vµ kh¶ n¨ng chuyÓn t¶i cña m¹ng ®îc t¨ng lªn.
T¹o ®iÒu kiÖn cho viÖc dïng giao diÖn ®å ho¹ (GUI) cã s½n trªn c¸c tr¹m
lµm viÖc hiÖn cã.
Cho phÐp vµ cæ vò hÖ thèng më. Thùc tÕ lµ Client vµ Server cã thÓ ch¹y
trªn c¸c nÒn phÇn cøng vµ phÇn mÒm kh¸c nhau.
Tuy nhiªn kh«ng ph¶i lµ m« h×nh Client-Server ®· hoµn chØnh, m« h×nh
nµy vÉn cßn c¸c nhîc ®iÓm sau ®©y:
NÕu cã nhiÒu thµnh phÇn logic cña øng dông ®îc chuyÓn vÒ Server th×
Server sÏ n¶y sinh hiÖn tîng cæ chai nh m¸y tÝnh lín (main frame) trong m«
h×nh thiÕt bÞ cuèi. C¸c tµi nguyªn cña Server sÏ ë tr¹ng th¸i bÞ ®ßi hái lµm viÖc
ë møc cao h¬n do viÖc t¨ng sè ngêi tiªu thô tµi nguyªn (End User).
C¸c øng dông ph©n t¸n, ®Æc biÖt lµ nh÷ng øng dông ®îc thiÕt kÕ cho xö lý
hîp t¸c thêng phøc t¹p h¬n c¸c øng dông kh«ng ph©n t¸n. Tuy nhiªn mét vµi
sù phøc t¹p nµy cã thÓ ®îc gi¶m bít b»ng c¸ch thu nhá vÊn ®Ò lín thµnh mét
tËp hîp vÊn ®Ò nhá h¬n, cã thÓ cã ®îc tÝnh ®éc lËp lÉn nhau, t¬ng tù nh trong
hÖ thiÕt kÕ ®¬n thÓ.
C. HÖ qu¶n trÞ CSDL Oracle
§èi víi mét hÖ CSDL ph©n t¸n th× hÖ qu¶n trÞ CSDL cã ý nghÜa rÊt quan
träng v× ph¶i ®¶m b¶o tÝnh thèng nhÊt vµ toµn vÑn cña d÷ liÖu, ®¶m b¶o cho
c¸c ch¬ng tr×nh ngêi dïng truy xuÊt ®Õn CSDL ph©n t¸n nh lµ mét CSDL tËp
trung duy nhÊt. Ngoµi ra hÖ qu¶n trÞ CSDL cßn ph¶i ®¶m b¶o chøc n¨ng ph©n
quyÒn truy nhËp vµ b¶o mËt trªn ®êng truyÒn.
Trang 19
- Xem thêm -