Professional Documents
Culture Documents
Chuong 7
Chuong 7
Giao Tc
Ni dung
1 2
www.themegallery.com
Ni dung
1 2
www.themegallery.com
nh ngha
Giao tc
n Hng
Chi tit_2 H Chi tit_1 H
Cp nht SL
www.themegallery.com
Tnh ACID
Mi thao tc phi c thc hin, hoc u b hy Tt c d liu phi trng thi nht qun sau khi giao tc kt thc
Atomicity (nguyn t)
Isolation (c lp)
Mt giao tc thc hin ng thi vi giao tc khc th khng b nh hng bi giao tc khc
Khai bo giao tc
Giao tc
n Hng
www.themegallery.com
INSERT
UPDATE
DELETE
Database sau giao tc
www.themegallery.com
Li phn mm
C php
Create proc TenProc As Begin Bt u giao tc Begin tran Kt thc giao tc hy /*giao tc b li*/ giao tc, a CSDL v trng thi ban u rollback tran /*giao tc thnh cng*/ Kt thc giao tc thnh commit tran cng giao tc c lu bn vng xung CSDL End
www.themegallery.com
V d
Create proc DatHang As Begin Begin tran Insert into DonHang Insert into CT_DonHang Update SanPham commit tran End
www.themegallery.com
--do something
commit tran
commit tran
Lnh commit transaction ca transaction con ch gim @@trancount i 1, khng c tc dng yu cu h qun tr ghi nhn chc chn nhng thay i trn CSDL m transaction ny lm. Lnh commit ca transaction ngoi cng mi c tc dng ny. Khi khai bo transaction tng minh, phi m bo rng sau n c rollback hoc commit tng minh, nu khng, transaction s tip tc tn ti v chim gi ti nguyn, ngn tr s thc hin ca cc transaction khc.
11
www.themegallery.com
www.themegallery.com
V d 1
BEGIN TRANSACTION giaotac3 UPDATE diemthi SET diemlan2=0 WHERE diemlan2 IS NULL SAVE TRANSACTION a UPDATE monhoc SET sodvht=4 WHERE sodvht=3
ROLLBACK TRANSACTION a UPDATE monhoc SET sodvht=2 WHERE sodvht=3 COMMIT TRANSACTION giaotac3
www.themegallery.com
V d 2
BEGIN TRANSACTION giaotac4 UPDATE diemthi SET diemlan2=0 WHERE diemlan2 IS NULL
SAVE TRANSACTION a UPDATE monhoc SET sodvht=4 WHERE sodvht=3
Ton b giao tc b hy
Ni dung
1 2
www.themegallery.com
Bi cnh
M hnh ng dng a ngi dng Mt CSDL lu ti Server v nhiu clients ng thi truy cp v thao tc trn cng CSDL Giao tc Ti ca client X ang thao tc trn CSDL, trong khi mt giao tc Tj ca client Y cng ang thc hin truy xut v thay i CSDL. Cc Ti v Tj c th xung t, tranh chp ln nhau.
www.themegallery.com
T2
Begin tran
www.themegallery.com
Unrepeatable read
Phantom Lost update
www.themegallery.com
Bng ma
Mt d liu cp nht
Dirty read
STT T1 1 Begin tran 2 3 write (A) wait for delay '00:00:05' 4 5 6 If (Li) 7 Rollback tran 8 Commit tran
9
T2
Begin tran
read (A)
Commit tran
Unrepeatable read
STT T1 1 Begin tran 2 3 Read(A) 4 5 Read(A) 6 7 Commit tran T2
Begin tran Write(A)
Commit tran
Phantom
STT T1 1 Begin tran 2 3 Read(A) 4 5 Read(A) 6 7 Commit tran T2
Begin tran Insert(A)
Commit tran
Lost update
STT T1 1 Begin tran 2 3 Read(A) 4 5 6 Write(A) 7 Commit tran 8 T2
Begin tran Read(A) Write(A)
Commit tran
Li giao tc
Khng c quyn truy cp trn i tng (table, stored procedure,) Vi phm rng buc ton vn (primary key, foreign key, check, rule, cc rng buc c kim tra bng trigger,). Deadlock.
www.themegallery.com
Li giao tc
SQL Server tr gi tr li v trong bin ton cc @@error. @@error= 0: khng xy ra li @@error <> 0: xy ra li vi m li l @@error Giao tc khng th t ng rollback khi gp nhng li pht sinh trong qu trnh thc hin 1 cu lnh thnh phn trong giao tc. V vy cn kim tra gi tr ca bin @@error sau mi cu lnh thnh phn trong giao tc v cn x l nhng li (nu c): yu cu giao tc rollback mt cch tng minh bng lnh rollback transaction.
www.themegallery.com
Li giao tc
Create proc sp_ThemDG @ Ten as --buoc 1 : xc nh m c gi declare @madg set @madg = 1 begin transaction while exists (select * from DocGia where ma_docgia = @madg) set @madg = @madg +1 if ( @@error <>0 ) begin www.themegallery.com rollback tran return end -- buoc 2 : insert vao bang docgia insert into DocGia values() if ( @@error <>0 ) begin rollback tran return end commit transaction
X l tranh chp
C ch x l tranh chp ng thi ca SQL Server K thut kha : cc giao tc mun c/ghi trn cc n v d liu phi pht ra yu cu xin kha trn n v d liu . Mc c lp : l cc thit lp trong giao tc quy nh vic xin kha/gi kha ca nhng thao tc c/ghi ln n v d liu. Kha trc tip trong tng cu lnh
www.themegallery.com
K thut kha
Khng t kha (Nolock) Kha chia s (shared lock) : Cn gi l kha c (read lock) . Gi tt : Kha S Khi c mt n v d liu SQL t thit lp shared lock trn n v d liu . Shared lock c th c thit lp trn 1 trang, 1 bng, hay mt dng d liu.
www.themegallery.com
K thut kha
Kha cp nht (update lock) Cn gi l Intend to write lock. Gi tt: Kha U. Dng khi c d nh ghi d li d liu c. Kha c quyn (exclusive lock) : Cn gi l kha ghi (write lock). Gi tt : Kha X. Khi thc hin thao tc ghi (Insert, Update, Delete) HQT t ng thit lp kha X trn n v d liu . Kha X c gi n ht giao tc.
www.themegallery.com
Cho php (tng thch) Khng cho php (khng tng thch)
www.themegallery.com
K thut kha
Gio tc T1 Ghi trn n v d liu A Xin kha X trn A. Mun ghi trn n v d liu B Mun xin kha X trn B??? Gio tc T2 Ghi trn n v d liu B Xin kha X trn B. Mun ghi trn n v d liu A Mun xin kha X trn A???
Phi ch nhau
www.themegallery.com
Mc c lp
Read Uncommitted c : Khng pht S khi c do khng phi ch khi c d liu. Gii quyt : Khng gii quyt c bt c vn x l ng thi no. Read Committed y l mc mc nh ca SQL. c : Pht S khi c, gii phng S ngay sau khi c. Gii quyt : Ch gii quyt c Dirty Read.
www.themegallery.com
Mc c lp
Repeatable Read c : Pht S khi c v gi S n khi transaction kt thc. Gii quyt : Gii quyt c Dirty Read v Unrepeatable Read. Khng ngn chn lnh insert d liu tha iu kin thit lp S do hok gii quyt c phantom. Serializable Ging Repeatable Read, c ngn chn lnh insert d liu tho iu kin thit lp S. Gii quyt c Dirty Read,Unrepeatable Read v Phantom
www.themegallery.com
Mc c lp
Read Uncommitted Read Committed : dirty read Repeatable Read : dirty read v unrepeatable read Serializable : dirty Read, Unrepeatable Read v Phantom.
Cha gii quyt c Lost update Mc c lp c tc dng trn ton b giao tc n khi gp 1 mc c lp khc.
www.themegallery.com
www.themegallery.com
Cc cp kha
STT Kha ngha 1 ReadUncommitted Khng thit lp shared lock khi c / Nolock (tng t nh mc c lp Read Uncommitted) 2 ReadCommitted -y l ch mc nh (tng t readcommitted) -Ch c nhng d liu commit -Thit lp shared lock trn n v d liu c v m clock ngay khi c xong. 3 RepeatableRead Thit lp shared lock khi c v gi shared lock n ht giao tc
www.themegallery.com
Cc cp kha
STT Kha 4 Serializable / Holdlock ngha -Thit lp shared lock khi c, gi lock n ht giao tc. -Khng cho insert dng tha iu kin thit lp kha -Dng updatelock thay cho shared lock. -Ch s dng trong cu select. -Uplock c gi n ht giao tc. Ch nh dng kha c quyn -Ch kha dng d liu. -p dng cho cu lnh select.
Updlock
XLock
Readpast
www.themegallery.com
Cc cp kha
STT Kha 8 RowLock 9 TabLock ngha Ch t kha trn dng cn thao tc -Kha ton b dng trn bng ang thao tc. -Cc thao tc (Insert / Update / Delete) khng th thc hin trn bng ny. Xlock + TabLock
10
TabLockX
www.themegallery.com
Thit lp cp kha
Select From {Tab1 Alias1 with (Lock_mode [,n]} [,n]) Where V d : Select SV.HoVaTen, K.TenKhoa From SinhVien SV with (ReadCommitted), Khoa K with (Updlock) Where SV.Khoa = K.Ma
www.themegallery.com
7. Deadlock
Trong truy xut ng thi, deadlock l mt trng thi trong cc giao tc ch nhau v mt ti nguyn lm cho h thng ng yn
Deadlock
Circle deadlock
Conversion deadlock
40
www.themegallery.com
Cycle deadlock
Transaction 1 Transaction 2
Bng 1
Bng 2
Bng 2
Gi X-lock trn bng 2
Deadlock
Bng 1
41
www.themegallery.com
Cycle deadlock
Transaction 1 Insert/ Update/Delete (A) Insert/ Update/Delete (B)
Insert/ Update/Delete (A) Commit Commit
Transaction 2
Insert/ Update/Delete (B)
www.themegallery.com
Conversion deadlock
Transaction 1 Transaction 2
Gi S-lock
Gi S-lock
Yu cu X-lock Deadlock
Yu cu X-lock
43
www.themegallery.com
Conversion deadlock
Transaction 1 Select (A) Insert/ Update/Delete (A)
Insert/ Update/Delete (A) Commit Commit
Transaction 1
Select (A)
www.themegallery.com
Deadlock
Khi dead lock xy ra
SQL Server s chn 1 trong 2 transaction gy dead lock hy b, khi transaction cn li s c tip tc thc hin cho n khi hon tt Transaction b chn hy b l transaction m SQL c tnh chi ph cho phn vic lm c t hn transaction cn li.
45
www.themegallery.com
Lu
Giao tc khng t rollback khi gp li trong qu trnh thc hin Cn kim tra gi tr bin @@error sau mi cu lnh thnh phn v x l nu c
Phi lun m bo lc runtime mt trong 2 cp [begin tran - commit] hoc [begin tran - rollback] c thc thi
46
www.themegallery.com
Thank You!