You are on page 1of 46

Chng 7

Giao Tc

Ni dung

1 2

Gii thiu Giao tc iu khin ng thi

www.themegallery.com

Ni dung

1 2

Gii thiu Giao tc iu khin ng thi

www.themegallery.com

nh ngha
Giao tc
n Hng
Chi tit_2 H Chi tit_1 H

Giao tc l chui cc hnh ng tng tc trn CSDL

Cp nht SL

Giao tc phi m bo tnh cht ACID

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)

Consistency (nht qun)

Durability (bn vng)


Khi giao tc thc hin thnh cng th mi thay i ca n phi c lu bn vng trong CSDL
www.themegallery.com

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

Begin Tran Bt u giao tc


INSERT n hng
INSERT Chi tit n hng 1 INSERT Chi tit n hng 2

Chi tit_1 H Chi tit_2 H


Cp nht SL

Update Cp nht s sn phm

End Tran Kt thc giao tc

www.themegallery.com

Tnh hung giao tc


Database trc giao tc ROLLBACK SELECT GIAO TC INSERT UPDATE

Database trc giao tc


SELECT ROLLBACK

Database trc giao tc SELECT INSERT Li phn cng

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

Giao tc lng nhau


create proc sp_test as begin tran --T1
--do something

begin tran --T2


exec sp_test

--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

Trng thi CSDL trc giao tc

Giao tc: Bt u bi Begin Tran Kt thc bi Commit tran

Trng thi CSDL ti im nh du a


Trng thi CSDL ti im nh du b

Khi rollback ch quay li ti v tr nh du. Cc cu lnh sau vn thc hin


Trng thi CSDL sau giao tc

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

Khng c thc hin

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

ROLLBACK TRANSACTION giaotac4 UPDATE monhoc SET sodvht=2 WHERE sodvht=3


COMMIT TRANSACTION giaotac4
www.themegallery.com

Ni dung

1 2

Gii thiu Giao tc iu khin ng thi

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

Giao tc lng nhau


STT T1 1 Begin tran 2 3 read (A) 4 5 . n read (A) n+1 Commit tran
www.themegallery.com

T2
Begin tran

write (A) Commit tran

Giao tc lng nhau


Tham s @@trancount cho bit s transaction ang thc thi. Khi khai bo transaction tng minh, phi rollback hoc commit tng minh : Gii phng ti nguyn transaction ang chim gi. Trnh cn tr vic thc hin ca cc transaction khc.

www.themegallery.com

Vn truy xut ng thi


Dirty read c d liu rc Khng th c li d liu

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)

T2 c d liu (rc) b T1 hy.


www.themegallery.com

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

T1 c d liu gi tr A khc nhau 2 ln c.


www.themegallery.com

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

T1 c tp d liu 2 ln khc nhau


www.themegallery.com

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

D liu c ghi bi T2 b ghi bi T1


www.themegallery.com

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

Bng tng thch kha


Shared lock
Shared lock Update lock Exclusive lock Update lock Exclusive lock

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

Kha trn tng cu lnh


Cp kha l cc loi kha khc nhau c gn vo tng table trong cu lnh from ca tng thao tc select. Ngoi cu lnh select, cp kha cn c th gn vo cc cu lnh cp nht, tuy nhin y ta ch quan tm cu select.

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

Gi X-lock trn bng 1

Bng 1

Bng 2

Gi X-lock trn bng 2

Bng 2
Gi X-lock trn bng 2

Deadlock

Bng 1

Gi X-lock trn bng1

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

Rollback khng c tc dng return


Nu c khai bo giao tc m khng c kt thc giao tc giao tc vn cn thc hin khi store procedure kt thc.

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!

You might also like