Nhp môn H qun tr c s d liu DB2
126
db2 BACKUP DB sample TO C:\BACKUPS
Chú ý rng th mc C:\BACKUPS phi t+n ti trc khi thc thi lnh. C.ng chc chn
là không có kt ni nào n c s d liu khi bn thc thi lnh trên, nu không bn s,
nh#n mt thông báo li bi mt sao lu ngoi tuyn không th c thc hin khi có
các kt ni.
Trong trng hp tìm ra nhng kt ni n c s d liu, a ra lnh DB2 này t*
trình n Window/Linux:
db2 list applications
/ buc ngt tt c kt ni n c s d liu, a ra lnh t* trình n lnh DB2
Window hoc ca Linux:
db2 force application all
Bn có th không cn chy lnh cui cùng trong môi trng sn xut vi nhiu ngi s
dng, nu không bn s, nh#n nhng cuc g&i t* nhng +ng nghip nóng tính y!
C.ng lu ý rng lnh cui cùng chy theo cách thc không +ng b. Ngh'a là khi bn c
gng chy lnh sao lu ngay sau ó, nó có th không làm vic. /i vài giây, và lp li
lnh sao lu nu bn ã gp li lúc u.
Sau khi thc thi thành công lnh sao lu, mt tp mi cha nh c s d liu sao lu
c to ra. Tên ca tp này theo quy c c ch- trong hình 11.6
Hình 11.6 - Quy c t tên nh sao lu
Loi “0” có ngh'a ó là bn sao lu y . Loi “3” ch!ng hn, ngh'a là ch- mt sao lu
bng biu trng. Nút c c nh vi NODE0000 cho c s d liu không phân tán, là
trng hp cho tt c n bn DB2 tr* n bn thng mi DB2 Enterprise Edition vi
tính nng DPF. Nút catalog c.ng c c nh vi CAT0000. Tham kho sách hng
d%n DB2 có chi tit hn
Khi có vài bn sao lu c ghi li và lu tr trên cùng ng d%n thì mc thi im ghi
li cui tên tp c s dng phân bit gia các nh sao lu. Nh chúng ta s,
thy phn tip theo, lnh RESTORE có th s dng mc thi im này phc h+i
mt bn sao ã nh.
Nhp môn H qun tr c s d liu DB2
127
Bài tp nhanh #8 - Lp l$ch sao lu
Mc ích:
Mc dù DB2 có mt vài kh nng t ng duy trì c s d liu, nhng ôi khi bn c.ng
mun hiu ch-nh chúng khi có mt hot ng c th di0n ra. Trong phn bài t#p nhanh
này, bn s, hiu ch-nh lch sao lu cho c s d liu EXPRESS.
Các th tc :
1. T* cây i tng Trung tâm iu khin, bn ch&n All Database. Nhp chut
phi trên c s d liu EXPRESS và ch&n biu tng Backup. Công c t*ng
bc Backup c khi ng.
2. Trong mc Introduction s, tóm tt trng thái hin ti ca c s d liu bao
g+m thi im sao lu cui cùng và phng thc truy c#p. Bm Next chuyn
ti mc tip theo ca công c Backup.
3. Trong mc Image, ch&n ích n ca d liu s, c sao lu. Thông thng,
bn nên ch&n mt 'a khác vi 'a ang lu c s d liu hin hành. Bây
gi, to mt th mc mi trong h thng có tên là C:\db2backup, ây s, là th
mc cha c s d liu sao lu. Hãy ch&n biu tng File System trong danh
sách th Media Type. Bm nút Add, ch&n th mc bn v*a to ra, r+i bm OK.
Sau ó bm Next chuyn sang mc tip theo.
4. Bn có th m mc Options and Performance tuy nhiên bn nên ch
mc nh vì DB2 mc nh cho phép sao lu ch ti u nht. Tip theo bn
ch&n ch&n mc Schedule.
5. Trong mc Schedule, nu nh trình l#p lch cha c kích hot thì bn hãy
kích hot chúng. Ch&n hê thng to danh mc các công c và thc hin
chúng. Ch- ra mt gin + cho danh mc công c và ch&n to nó trong c s
d liu EXPRESS hin hành. Danh mc công c s, cha d liu bin i v tt
c các tác v l#p lch. Bm nút OK tip tc. Bm Next chuyn sang mc
tip theo sau khi danh mc công c ã c to l#p.
Nhp môn H qun tr c s d liu DB2
128
6. Trong mc Schedule, to ra mt mc lc cho vic thi hành các tác v. L#p lch
sao lu mi ngày vào lúc 1 gi sáng. Bm Next chuyn sang mc k tip.
7. Trong mc Summary, bn s, xem li các tác v s, c to ra. Sau ó bm
Finish to ra tác v.
8. Chy Trung tâm tác v (Task Center) xem hoc sa cha các tác v sao
lu v*a mi to ra.
Nhp môn H qun tr c s d liu DB2
129
11.7 Khôi phc c s d liu
Khôi phc c s d liu bao hàm vic khôi phc c s d liu t* các bn ghi d phòng
và nh#t ký. Nu nh bn ch- khôi phc c s d liu t* bn ghi d phòng thì s, to ra
các c s d liu nh ã t+n ti thi im sao lu.
Nu vic lu tr bn ghi c cho phép trc vic sao lu, thì bn không ch- khôi phc
li bng cách s dng nh sao lu, mà còn t* các tp nh#t ký. 4 phn tip theo ta s,
thy cách khôi phc d liu cun cho phép bn có th khôi phc t* các bn ghi d
phòng và sau ó ghép vào phn cui cùng ca các tp nh#t ký, hoc mt im c th
theo thi gian
.
Chú ý rng t* khôi phc (recovery) c dùng nhiu trong phn này, nhng lnh khôi
phc li là RESTORE.
11.7.1 Các kiu khôi phc d liu
Có ba loi khôi phc d liu:
Khôi phc d liu h+ng:
Gi thit rng bn ang làm vic vi c s d liu DB2 trên máy tính thì t ngt mt
in, chuyn gì s, xy ra vi c s d liu ca bn?
Khi bn khi ng li máy tính và khi ng DB2, chng trình khôi phc d liu h"ng
s, c t ng thc thi. DB2 s, t ng chy lnh RESTART DATABASE và s, &c
và phc h+i các giao dch khi trc trng thái kích hot. Sau khi hoàn thành, bn s,
c m bo rng, c s d liu ca bn trng thái phù hp nht.
Khôi phc d liu phiên bn (hoc khôi phc nh):
Có ngh'a là, bn s, phc h+i c s d liu ca bn t* nh mt bn sao. Do ó c s d
liu ca bn c tr v trng thái ngay trc khi nó c sao lu. M&i tác ng lên c
s d liu ó sau thi im sao lu u b mt.
Khôi phc d liu theo thi gian:
Kiu khôi phc d liu này v*a cho phép bn khôi phc c s d liu t* mt bn sao,
v*a khôi phc d liu ti mt thi im xác nh bng lnh ROLLFORWARD. Khôi phc
d liu kiu này làm gim s mt mát d liu mt cách ti a.
11.7.2 Khôi phc c s d liu
Dùng lnh RESTORE khôi phc d liu t* mt bn lu. Di ây là cu trúc n
gin nht cho câu lnh này:
RESTORE DATABASE <tên c• s• d• li•u> [from <•••ng d•n>] [taken
at <th•i-•i•m>]
Ví d: Nu bn có mt tp sao lu có tên nh sau:
Bn s, gõ lnh nh sau:
Nhp môn H qun tr c s d liu DB2
130
RESTORE DB sample FROM <•••ng d•n> TAKEN AT 2006314131259
11.8 Các hot ng khác vi BACKUP và RESTORE
Di ây là danh sách mt vài iu bn nên bit v lnh BACKUP và RESTORE. Chúng
tôi khuyên bn nên &c li cun hng d%n v DB2 có thêm thông tin chi tit.
• Sao lu c s d liu ch 32 bit còn khôi phc d liu ch 64 bit.
• Khôi phc c c s d liu ang t+n ti.
• Khôi phc d liu ti mt 'a khác vi vùng cn khôi phc.
• Khôi phc hoc sao lu d liu theo không gian bng, thay vi làm vi toàn b c
s d liu.
• Cho phép sao lu nhng thay i (Delta) và sao lu tng dn (incremental).
Cách sao lu thay i ch- sao lu nhng thay i tip theo, trong khi ó cách sao
lu dn tng thì ghi nh#n toàn b nhng thay i và tích hp chúng vào mi nh
sao lu.
• Sao lu các bn “chp” d liu (flash copy) (òi h"i v phn cng tng thích)
• Khôi phc bng ã mt (nu tùy ch&n c l#p cho bng)
•
Sao lu h iu hành này và khôi phc h iu hành khác là không th.
Dùng db2look và db2move cho trng hp này.
Nhp môn H qun tr c s d liu DB2
131
12
Chng 12 - Nhim v bo trì
Trong chng này chúng ta s, bàn v các nhim v cn thit gi cho CSDL ca bn
duy trì hot ng c tt. Tt c m&i th trong DB2 u t ng thc hin nhng công
vic này. Bn DB2 Express-C c.ng ging nh tt c các bn DB2 hin thi u cha
ng tt c các kh nng t ng này. Kh nng t qun lý là mt li ích ln làm nh"
g&n và làm v*a phi s lng nhân viên trong nhng công ty, nhng ngi không cn
thuê làm liên tc làm qun tr qun lý máy ch d liu. Khác vi vic làm bng tay,
nu mt ngi qun tr c thuê, anh y hay cô y s, có nhiu thi gian rnh ri
thc hin vic nâng cao hot ng làm gia tng giá tr cho công ty
.
12.1 REORG, RUNSTATS, REBIND
Có ba công vic duy trì chính trong DB2, nh hình 12.1 mô t: REORG, RUNSTATS và
REBIND.
Hình 12.1 – Các công vic duy trì: REORG, RUNSTATS, REBIND
Hình 12.1 trình bày nhng công vic duy trì c thc hin theo mt chu trình hình tròn.
Nu mt REORG c thc hin, nó c khuyên là nên chy mt RUNSTATS, theo
sau là mt REBIND. Sau mt thi gian, các bng trong mt c s d liu ã c thay
i theo các lnh nh UPDATE, DELETE và INSERT. Ti thi im ó, chu k mi li
c bt u vi REORG.
12.1.1 Lnh REORG
Qua thi gian, bn thc hin các tính toán INSERT, UPDATE, DELETE trên c s d
liu ca bn, d liu ca bn bt u b phân on, chia nh" ra thành các trang c s
d liu. Lnh REORG s, tái ghép nhng mnh vn c.ng nh nhng khong trng li và
s, t chc li d liu làm cho vic truy vn d liu tr nên hiu qu hn. Các bng
hay thay i s, có li nht khi dùng REORG. Bn có th làm ch- mc REORG nh vi
Nhp môn H qun tr c s d liu DB2
132
các bng, và mt REORG có th c thc hin trc tuyn hay không trc tuyn.
Lnh REORG không trc tuyn thc hin nhanh hn và hiu qu hn, nhng không cho
phép truy nh#p ti bng, trong khi lnh REORG trc tuyn cho phép truy nh#p ti bng,
nhng có th làm tiêu hao mt chút tài nguyên h thng; ây là nhng công vic tt nht
cho nhng bng nh".
Cú pháp:
REORG TABLE <tablename>
Ví d
:
REORG TABLE employee
Lnh REORGCHK có th c dùng trc mt REORG xác nh bng hay ch- s
cn c sa.
12.1.2 Lnh RUNSTATS
C ch ti u ca DB2 (Optimizer) là “khi óc” ca DB2. Nó tìm nhng ng d%n truy
nh#p hiu qu nht nh v và truy vn d liu. C ch ti u là h thng ánh giá tri
thc, và s dng phân tích thng kê các i tng c s d liu c lu trong các
bng danh mc cho hiu sut khai thác c s d liu ln nht. Ví d, các bng danh
mc có các phân tích thng kê v có bao nhiêu ct hin din trong mt bng, có bao
nhiêu hàng trong nó, có bao nhiêu và nhng kiu gì ca ch- s s)n có vi mt bng, …
Thông tin v phân tích thng kê không c c#p nh#t t ng. Chính vì thit k kiu
này, nên bn không mun DB2 c#p nh#t nhng thng kê sau mi thao tác trên c s d
liu, nó s, phn tác dng vi yêu cu v hiu nng ca h thng. Thay vào ó, DB2
cung cp lnh RUNSTATS c#p nh#t nhng thng kê này. Nó gi cho các thng kê
c s d liu luôn c#p nh#t. C ch ti u ca DB2 có th to ra nhng thay i gc r0
c bn trong ng d%n truy nh#p nu bng ch- có mt dòng so vi bng có mt triu
dòng. Khi nhng thng kê c s d liu c c#p nh#t, DB2 có th ch&n mt phng
án truy nh#p tt hn. Tn sut ca các thng kê t#p hp này s, xác nh c d liu
trong bng thay i nh th nào.
Cú pháp:
RUNSTATS ON TABLE <schema.tablename>
Ví d
:
RUNSTATS ON TABLE myschema.employee
12.1.3 BIND/REBIND
Sau khi chy thành công lnh RUNSTATS, không phi tt c các câu truy vn s, c
dùng nhng thng kê mi nht. Nhng s + truy nh#p SQL t'nh c xác nh khi bn
a ra lnh BIND, vì các thng kê c dùng ti thi im ó không ging nhau nh
thi im hin ti. Hình 12.2 s, giúp chúng ta hiu ý tng này.
Nhp môn H qun tr c s d liu DB2
133
Hình 12.2 – Tin trình kt ni SQL t-nh
.
Trong hình 12.2 mt chng trình nhúng vit bng C (c lu tr nh mt tp vi
phn m rng là “sqc”) c tin biên dch. Sau khi tin biên dch, hai tp c sinh ra,
mt tp “.c” cha mã C vi tt c chú thích SQL, và mt tp “.bnd” cha tt c các câu
lnh SQL. Tp C vi phn m rng “.c” c biên dch nh thng l vi trình biên dch
C, to mt “th vin” nh trình bày phía trên bên phi ca hình. Tp “.bnd” ging nh
v#y, nó c óng gói lu trong c s d liu. /óng gói thì tng ng vi biên dch
các câu lnh SQL vi nhng s + truy nh#p tt nht c xác nh trên các thng kê
ã có ti thi im này, và sau ó lu chúng thành gói.
Bây gi, iu gì s, xy ra nu mt triu dòng c chèn vào bên trong bng s dng
trong chng trình nhúng trên? Sau khi chèn, nu mt lnh RUNSTATS c thc thi,
nhng thng kê s, c c#p nh#t, tuy nhiên gói s, không t ng c#p nh#t tính toán
li ng d%n c s trên nhng thng kê mi nht. Lnh db2rbind có th c dùng
óng gói li các gói trên vi thng kê mi nht.
Cú pháp:
db2rbind database_alias -l <logfile>
Ví d:
/ óng gói li tt c các gói ca c s d liu sample và lu nó trong nh#t ký ti tp
mylog.txt, thc hin lnh sau:
db2rbind sample -l mylog.txt
12.1.4 Các công vic duy trì t& Trung tâm iu khin
T* Trung tâm iu khin bn có th REORG và RUNSTATS. Hình 12.3 trình bày cách
thc hin.
Nhp môn H qun tr c s d liu DB2
134
Hình 12.3 – REORG và RUNSTATS t& Trung tâm iu khin
Bn ch&n bng mà bn mun t chc li, nhp phi chut và ch&n t chc li (cho
REORG) hay chy thng kê (cho RUNSTATS)
Hin th$ thông s c s d liu:
Khi bn ch&n mt c s d liu, khung nhìn hot ng c s d liu phía di bên
phi ca Trung tâm iu khin s, cung cp thông tin v c s d liu nh là v kích
thc, ca ln sau cùng, dù nó có c bo trì t ng hay không. Vic hin th này cho
phép bn nhanh chóng xác nh nhng duy trì cn thit cho c s d liu ca bn. Hình
12.4 hin th nhng thông tin này.
Hình 12.4 – Hin th$ thông s c s d liu t& Trung tâm iu khin
Nhp môn H qun tr c s d liu DB2
135
12.2 Các la chn bo trì
Có 3 cách thc hin vic bo trì h thng.
1. Bo trì th công
Bn thc hin hot ng bo trì này mt cách th công khi có nhu cu phát sinh.
2. To ra mt on kch bn (script) thc hin vic bo trì h thng.
Bn có th to các kch bn vi nhng lnh bo trì và l#p lch hp lý cho nó hot ng.
3. T ng bo trì
DB2 t ng giám sát công vic bo trì cho bn (bng lch REORG, RUNSTATS,
BACKUP)
Trong phn này, chúng ta t#p trung ch yu vào cách bo trì t ng.
Hot ng bo trì t ng bao g+m nhng bc sau ây:
- Ngi dùng nh ngh'a mt ca s bo trì (khung thi gian) ti thi im ó h
thng s, thc hin công vic bo trì mà không gây ra s xáo trn. Ví d, nu h
thng có ít nht các hot ng vào ngày ch nh#t, t* 2h sáng ti 4h sáng, thì
khung thi gian này s, hot ng nh là mt ca s bo trì.
- Có 2 loi ca s bo trì chính: mt là thc hin trc tuyn, còn loi kia là
thc hin ngoi tuyn.
- DB2 ch- thc hin bo trì mt cách t ng khi cn thit và ang trong thi gian
kích hot ca ca s bo trì.
T* giao din iu khin chính, bn có th m “Configure Automated Maintenance
Wizard” nh hình minh h&a 12.5.
Hình 12.5 – M Configure Automated Maintenance Wizard
Hình 12.6 s, hin ra ca s “Cu hình bo trì h thng mt cách t ng theo hng
d%n”.
Nhp môn H qun tr c s d liu DB2
136
Hình 12.6 – Cu hình bo trì h thng mt cách t ng theo hng d%n
Nhp môn H qun tr c s d liu DB2
137
Bài tp nhanh #9 – Cu hình vic bo trì t ng
Mc ích
Trong bài t#p nhanh này, vi vài thao tác n gin, bn s, cu hình cho vic t ng
bo trì trên c s d liu m%u DB2.
Các th tc
1. T* cây i tng ca Trung tâm iu khin, nhn chut phi vào c s
d liu SAMPLE và ch&n mc “Configure Automatic Maintenance”. Nó s,
m ra ca s thc hin vic bo trì t ng theo hng d%n.
2. Trang Introduction ca “hng d%n” hin th nhng cài t hin thi ca
chc nng t ng bo trì. Nu bn to ra c s d liu vi chc nng t
ng bo trì, khi ó nó s, t ng c cu hình. Bn có th dùng “hng
d%n” này cu hình li chc nng t ng bo trì. Bm Next chuyn ti
trang tip theo ca “hng d%n”.
3. Trang Type ca “hng d%n” yêu cu bn ch&n gia vô hiu hóa tt c các
tùy ch&n t ng lu gi và thay i cu hình ca vic t ng bo trì. Ch&n
mt chc nng thay i cài t hin ti ca t ng lu gi. Bm Next.
4. Trang Timing (thi gian) ca “hng d%n” s, yêu cu bn ch- rõ ca s
bo trì. Cu hình cho ca s ngoi tuyn s, c thc hin vào mi ti th 7
và ch nh#t t* gia êm ti 6h sáng nh hình bên di. Bm nút Change
bên cnh ca s bo trì ngoi tuyn và ch&n thi gian nh mong mun. Sau
khi hoàn thành nhng thông tin cn thit, bm nút OK tr li “hng d%n”.
Thoát kh"i ca s trc tuyn (bo trì trc tuyn có th m bt k lúc nào).
Bm nút Next.
Nhp môn H qun tr c s d liu DB2
138
5. /n trang Notification (cnh báo) ca “hng d%n”, bn có th cài t mt s
tng tác trong trng hp có mt hot ng t ng bo trì b li. Bây gi
b" qua bc ó. Bm Next.
6. /n trang Actives ca “hng d%n”, bn có th ch&n là có t ng hóa các
công vic cá nhân hay không c.ng nh là c thông báo v các hot ng
c th khác.Trong ví d này, phi chc rng tt c các hp kim “Automate”
u c ch&n và các hp kim “Notify” u không c ch&n. Bm Next.
7. Trc khi thc hin trang k tip ca “hng d%n”, bn nên cu hình v trí
lu d phòng ca c s d liu. Lý tng nht là bn nên lu tr mt
'a v#t lý khác trong trng hp 'a b li. T* trang Activies, ch&n chc nng
“Backup database”, sau ó bm nút “Configure Settings”.
8. Trên trang Backup Criteria ca ca s “Configure Settings”, ch&n chc nng
“Balance Database Recoverability with Performance”. Trên trang Backup
Location, ch&n v trí lu d phòng và bm nút “Change”. Ch- ra mt v trí khác
thc hin lu d phòng (phi bo m là b nh trong 'a ó). Trên
trang Backup Mode, bo m là “Offline Backup” ã c ch&n. Bm OK
óng trang Backup Criteria. Bm nút Next.
9. Trang Summary (tóm tt) ca “hng d%n” cha mt bng tóm tt ca nhng
la ch&n mà bn ã ch&n. Bm nút Finish chp nh#n và thi hành nhng
thay i ó.
Nhp môn H qun tr c s d liu DB2
139
13
Chng 13 – Truy cp ng thi và khóa
Chng này t#p trung tho lu#n làm th nào cho phép nhiu ngi dùng truy c#p vào
cùng mt d liu ging nhau ti cùng mt thi im mà không làm nh hng l%n nhau,
và gi cho quá trình hot ng ca h& phù hp. Chúng ta s, tho lu#n v khái nim ca
các giao dch, truy c#p +ng thi và khóa.
13.1 Các giao d$ch
Mt giao dch hay mt n v công vic g+m có mt hay nhiu dòng lnh SQL mà khi
thc hin cn phi c coi là mt n v riêng l2. Có ngh'a là nu mt trong nhng
dòng lnh trong giao dch tht bi thì toàn b giao dch tht bi, và bt k dòng lnh nào
c thi hành n im tht bi thì s, c quay lui (h+i x), a d liu v giá tr,
trng thái trc ó. Mt giao dch kt thúc vi dòng lnh COMMIT, nó c.ng có ngh'a là
báo hiu bt u mt giao dch mi. Hình 13.1 cung cp cho chúng ta ví d ca mt giao
dch
Hình 13.1 – Mt ví d v giao d$ch
Trong hình 13.1, ví d bn mun chuyn 100 ô la t* tài khon tit kim (savings) ca
bn sang tài khon séc (checking). Vic ó òi h"i phi thc hin công vic này:
Tr* 100 ô la tài khon tit kim
Cng 100 ô la vào tài khon séc
Nhp môn H qun tr c s d liu DB2
140
Nu dãy các vic trên không c xem xét nh là mt n v công vic - mt giao dch,
hình dung iu gì s, xy ra nu có li (xy ra) sau khi tr* tin tài khon tit kim,
nhng không cng c tin vào tài khon séc. Bn s, mt 100 ô la!
13.2 Truy cp ng thi
Truy c#p +ng thi ý nói rng nhiu ngi có th làm vic cùng mt thi im trên
cùng mt c s d liu. DB2 c thit k nh là mt c s d liu nhiu ngi dùng.
Vic truy c#p d liu phi c kt hp chính xác và rõ rt s dng mt c ch bo
m tính toàn v7n và chc chn ca d liu. Xem ví d 13.2
Hình 13.2 - Mt ví d ca truy cp ng thi và s cn thit cho vic iu khin
truy cp ng thi
Trong hình 13.2, có 4 ng dng, App A, App B, App C và App D ang c gng truy c#p
n cùng mt dòng (dòng 2) trong bng d liu. Không có iu khin truy c#p +ng thi,
tt c ng dng có th thc hin các thao tác i vi dòng d liu này. Gi nh rng tt
c ng dng ang c#p nh#t ct Age cho dòng 2 vi giá tr khác, ng dng thc hin c#p
nh#t sau cùng s, là "ngi chin thng" trong trng hp này. Hin nhiên trong ví d
này mt iu khin truy c#p +ng thi nào ó c òi h"i m bo chc chn cho
kt qu. /iu khin truy c#p +ng thi này da vào vic s dng khóa bn ghi.
Khái nim khóa và truy c#p +ng thi có liên quan cht ch, vi nhau. Khóa dùng tm
thi ngn nhng ng dng thao tác trên chúng cho n khi mt thao tác kt thúc. Nu
chúng ta có nhiu khóa hn trong mt h thng thì vic truy c#p +ng thi s, ít i. Nói
mt cách khác, nu chúng ta có ít khóa hn trong h thng thì s, có nhiu truy c#p +ng
thi hn.
Nhng khóa này s, t ng xut hin h tr mt thao tác và s, c gii phóng khi
thao tác kt thúc (khi s dng lnh COMMIT hoc ROLLBACK). Các khóa có th t
trên các bng hoc các dòng. Có hai loi khóa c bn:
- Khóa chia s2 (khóa S) - c s dng khi ng dng mun &c và ngn cn c#p
nh#t t* nhng dòng khác
- Khóa dành riêng (khóa X) – c s dng khi mt ng dng c#p nh#t, thêm hay
xóa mt dòng
Bây gi chúng ta ý n hình 13.3, nó có v2 ging nh hình 13.2 nhng bây gi nó
xut hin thêm mt khóa
Nhp môn H qun tr c s d liu DB2
141
Hình 13.3 – Mt ví d ca truy cp ng thi, và s cn thit ca khóa
Trong ví d hình 13.3, nu App B truy c#p dòng th 2 u tiên, và thc hin vic
UPDATE, App B gi mt khóa dành riêng (khóa X) trên dòng ó. Khi App A, App C và
App D c gng truy c#p vào dòng 2, chúng s, không th UPDATE dòng này bi vì khóa
X. Vic kim tra này giúp bo m tính toàn v7n và chc chn ca d liu.
13.3 Các vn khi không kim tra truy cp ng thi
Khi không có iu khin truy c#p +ng thi, chúng ta có th gp nhng vn di ây
• Mt d liu c#p nh#t
• /&c vi không cam kt
• /&c không lp li
• /&c th*a
13.3.1 Mt d liu cp nht
Mt d liu c#p nh#t là mt vn tng t nh gii thích trc trong mc này, khi ng
dng thc hin c#p nh#t sau cùng s, là “ngi chin thng”.
Hình 13.4 – Mt d liu cp nht
Nhp môn H qun tr c s d liu DB2
1
42
Trong hình 13.4 có hai ng dng c gng c#p nh#t trên cùng mt dòng. Bên trái là App1,
và bên phi là App2. Và chui vic sau ó là:
1. App1 c#p nh#t mt dòng
2. App2 c#p nh#t dòng tng t
3. App1 hoàn tt
4. App2 hoàn tt
D liu c#p nh#t ca App1 s, b mt khi App2 c#p nh#t li nó, do ó xy ra vic “Mt d
liu”
13.3.2 *c vi không cam kt
Mt hành ng &c không cam kt hoc “&c có ý xu” c#p n vic mt ng dng
&c nhng thông tin mà không c cam kt, và tt nhiên vic này thì không c úng
n.
Hình 13.5 – /&c vi không cam kt
Hình 13.5 kéo theo nhng s vic này:
1. App1 c#p nh#t mt dòng
2. App2 &c giá tr mi ca dòng ó
3. App1 cun li nhng thay i trên dòng ó
App2 thì ang &c vi d liu không c cam kt, và k t* ó d liu không hp l và
c g&i là “&c vi không cam kt”
13.3.3 *c không lp li
/&c không lp li ng ý rng bn không t c kt qu ging nhau sau khi thc hin
vic &c ging nhau vi nhng thao tác ging nhau.
Nhp môn H qun tr c s d liu DB2
143
Hình 13.6 – *c không lp li
Trong hình 13.6, dng nh nu bn c gng ghi mt chuyn bay t* Dallas n
Honolulu. Mt dãy các s vic là:
1. App1 m mt bng (c hiu nh bng kt qu) hin hành nh bn thy trong
hình 13.6
2. App2 xóa mt dòng trong bng (ví d, dòng vi destination “San Jose”)
3. App2 hoàn tt nhng thay i
4. App1 óng và m li bng
Trong trng hp này, t* lúc App1 không c cung cp d liu tng t ang &c lp
li, nó không th sao chép li bng d liu, ó chính là vn c g&i là “&c không
lp li”
13.3.4 *c th&a
Vn &c không có thc ging nh vn &c không lp li, nhng khác nhau là
nhng l trình k tip, bn có th thu c nhng dòng v*a thêm vào mà úng ra thì
chúng (dòng) ít hn.
Hình 13.7 cung cp cho chúng ta ví d ca vn này
Hình 13.7 - *c th&a
Nhp môn H qun tr c s d liu DB2
144
Hình 13.7 trình bày chui s kin:
1. App1 m mt bng
2. App2 thêm mt dòng vào c s d liu ni mà nó có tiêu chu n ca bng
3. App2 hoàn tt nhng thay i
4. App1 óng và li tip tc m bng
Trong trng hp này, App1 s, không thy d liu tng t nh ang &c lp li, nó s,
ly c nhiu dòng hn. Vn này c g&i là &c th*a
13.4 Các mc cô lp
Bn có th ngh' các mc cô l#p nh là ni gi các chính sách khóa, da vào s la
ch&n mc cô l#p, bn có th có nhng tác ng khác nhau cho c s d liu khóa mt
ng dng
DB2 cung cp nhng mc bo v khác nhau cô l#p d liu:
• /&c vi không cam kt (UR)
• 6n nh con tr" (CS)
• /&c n nh (RS)
• /&c lp li (RR)
13.4.1 *c vi không cam kt
/&c vi không cam kt c.ng c hiu nh &c có ý xu. /ó là mc cô l#p thp
nht, và cung cp mc truy c#p +ng thi cao nht. Không có s khóa dòng nào t+n
ti trên nhng thao tác &c, nu các ng dng khác không xâm nh#p xóa hoc sa
mt bng, và thao tác c#p nh#t gi nhim v nh là nu chúng ta dùng cp cô l#p n
nh con tr".
Nhng vn v%n t+n ti vi cp cô l#p này:
• /&c vi không cam kt
• /&c không lp li
• /&c th*a
Nhng vn c ngn ng*a vi cp cô l#p này là:
• Mt d liu khi c#p nh#t
13.4.2 (n $nh con tr+
6n nh con tr" là cp cô l#p mc nh. Nó cung cp mt mc khóa ti thiu. V
c bn, vi mc cô l#p này thì dòng “hin hành” ca con tr" (cursor) b khóa. Nu ó là
dòng ch- &c, thì khóa s, c gi cho n khi mt dòng mi c np hoc n v làm
vic c kt thúc. Nu dòng c c#p nh#t, chic khóa s, c gi cho n khi n v
làm vic c kt thúc
Nhng vn v%n t+n ti vi mc cô l#p này:
• /&c không lp li
• /&c th*a
Nhng vn c ngn ng*a vi mc cô l#p này
• Mt d liu c#p nh#t
• /&c không cam kt
Nhp môn H qun tr c s d liu DB2
145
13.4.3 *c n $nh
Vi &c n nh, tt c các dòng mà ng dng làm vic trong mt phm vi u b khóa.
Cho mt con tr", nó khóa tt c các dòng tiêu chu n trong t#p hp kt qu. Ví d nu
bn có mt bng cha 10.000 dòng và câu truy vn tr v 10 dòng, sau ó ch- có 10
dòng ó b khóa. C ch &c n nh s dng mt mc khóa v*a phi.
Vn v%n t+n ti vi mc cô l#p này:
• /&c th*a
Nhng vn c hn ch vi mc cô l#p này là:
• Mt d liu c#p nh#t
• /&c vi không cam kt
• /&c không lp li
13.4.4 *c lp li
C ch &c lp li là mc cô l#p cao nht. Nó cung cp cp khóa cao nht, và truy
c#p +ng thi ti thiu nht. Khóa c gi trên tt c các dòng, x lý vic xây dng
mt t#p hp kt qu. Tc là nhng dòng không cn thit trong t#p hp kt qu cui
cùng có th b khóa. Không mt chng trình nào khác có th c#p nh#t, xóa, hoc thêm
mi mt dòng mà có th nh hng n t#p hp kt qu cho n khi mt n v công
vic c hoàn tt. C ch &c lp li bo m rng nhng câu truy vn tng t nhau
c a ra bi mt ng dng trong mt n v làm vic s, nh#n c kt qu ging
nhau ti mi thi im.
Vn v%n còn t+n ti vi mc cô l#p này:
• không có
Nhng vn c ngn ng*a vi mc cô l#p này:
• Mt d liu khi c#p nh#t
• /&c không cam kt
• /&c không lp li
• /&c th*a
13.4.5 So sánh các mc cô lp d liu
Hình 13.8 so sánh s khác nhau mà các mc cô l#p mang li. Trong hình, chúng ta
nhìn thy mc cô l#p “&c không cam kt” không khóa gì c. Mc cô l#p n nh
con tr" gi mt cái khóa dòng 1 khi nó ang ly dòng ó v, nhng s, gii phóng nó
sm r+i nó ly dòng 2 v,… /i vi mc cô l#p &c n nh hoc &c lp li, bt c
dòng nào ly v s, b khóa, và khóa s, không c gii phóng cho n khi kt thúc mt
giao tác (khi hoàn tt)
Nhp môn H qun tr c s d liu DB2
146
Hình 13.8 – So sánh các mc cô lp
13.4.6 *t mc cô lp
Nhng mc cô l#p có th c ch- rõ ti nhiu mc :
• Phiên làm vic trong ng dng
• Kt ni
• Câu lnh
Nhng mc cô l#p bình thng c xác nh ti phiên hoc ti mc ng dng. Nu
không ch- rõ c mc cô l#p trong ng dng ca các bn, nó mc nh ti con tr" n
nh. Ch!ng hn, bng 13.1 cho thy nhng mc cô l#p kh d' cho mt chng trình
.NET hay JDBC và làm sao khi t nhng thuc tính này phi phù hp vi mt mc cô
l#p ca DB2:
Mc cô l#p c phát biu có th dùng vi mnh WITH {mc cô l#p}. Ch!ng hn
nh:
SELECT … WITH {UR | CS | RS | RR}
Table 13.1 – S so sánh ca thut ng t mc cô lp