Transaction

ThS. Hoàng M nh Hà hoangha84@gmail.com https://sites.google.com/site/hoangha84

N i dung

• Gi

• Các tính ch t c a giao d ch. ấ ủ

• Các thành ph n x lý giao d ch trong HQT CSDL.

ầ ử

• Các tr ng thái c a giao d ch.

• L ch trình:

ớ i thi u v Giao d ch (Transaction). ị ệ ề

• Khái ni mệ

- T T N C a o h K

-

• L ch trình tu n t

ầ ự

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

• Tính kh tu n t

ả ầ ự

• Kh tu n t

ả ầ ự

xung đ t ộ

2

• M t s bài t p ậ

ộ ố

• Kh tu n t

view

ả ầ ự

• Giao d ch trong SQL

• Khái ni mệ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

3

Gi

i thi u v Giao d ch

Multi-user System

• 1 cách phân lo i HQT CSDL khác là d a trên s l

ng ng i ố ượ ự ạ ườ

• Single-user

• Multi-user: h u h t các HQT CSDL

ế

• X lý xen k (Interleaved processing)

s d ng đ ng th i: ồ ử ụ ờ

• X lý song song (Parallel processing)

ử ẽ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

4

Khái ni m Giao d ch (giao tác)

• Là m t ch ượ ươ v x lý truy xu t CSDL. ị ử

ng trình đ c th c thi đóng vai trò nh m t đ n ộ ư ộ ơ ự

• M t giao d ch có th g m nh ng x lý trên 1 ho c nhi u

ể ồ ữ ử ề ặ ị

• Giao d ch có th đ

ộ CSDL.

c vi ị ể ượ t trong ngôn ng SQL ho c m t ữ ặ ộ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

5

ế ngôn ng l p trình nào đó. ữ ậ

Khái ni m Giao d ch

• Begin Transaction … Commit/Rollback Transaction

• Các ho t đ ng đ

c th c hi n bên trong t o thành m t giao ạ ộ ượ ự ệ ạ ộ

• Đ đ m b o tính toàn v n c a d li u, ph i đ m b o các

d ch. ị

ẹ ủ ữ ệ ả ả ể ả ả

• Tính nguyên t

(Atomicity)

• Tính nh t quán (Consistency)

- T T N C a o h K

-

u

• Tính cô l p (Isolation) ậ

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

• Tính b n v ng (Durability)

ề ữ

6

ả tính ch t c a giao d ch: ấ ủ ị

• Các tính ch t c a giao d ch ấ ủ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

7

Gi

i thi u v Giao d ch

ấ ủ

Các tính ch t c a Transaction

ạ ộ ặ ộ

• Tính nguyên t giao d ch đ ượ ị gì.

(Atomicity): Ho c toàn b các ho t đ ng c a ử ủ c ph n ánh đúng trong CSDL ho c là không có ặ ả

• Tính nh t quán (Consistency): Khi m t giao d ch thành công, ủ

ị c và sau khi x y ra ả ự ấ ướ ả

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

8

ấ ph i đ m b o s nh t quán c a CSDL tr ả ả giao d ch. ị

ấ ủ

Các tính ch t c a Transaction

• Tính cô l p (Isolation): cho dù có nhi u giao d ch đ

ề ậ ị ượ

ồ ả ả ế c th c ự ả ự ươ

ầ ự ờ ự ớ ộ ng  S “Cô ự

hi n đ ng th i thì k t qu cu i cùng ph i đ m b o s t ả ố ệ đ ng v i th c thi các giao d ch đó m t cách tu n t ị ươ l p” c a các giao d ch. ậ ủ ị

ề ữ ộ ị

- T T N C a o h K

• Tính b n v ng (Durability): Sau khi m t giao d ch thành công, các thay đ i v i CSDL ph i còn nguyên cho dù có x y ra s ự c h th ng. ố ệ ố

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

9

ổ ớ ả ả

ệ ả

è Công vi c c a H qu n tr ị ệ ủ C s d li u ơ ở ữ ệ khi x lý giao d ch ị

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

10

Đ c/ghi d li u

ữ ệ

• CSDL n m trên đĩa. ằ

• Các truy xu t CSDL g m: ấ

• Đ c n i dung X: l y n i dung X t

CSDL trên đĩa ghi vào vùng

ộ nh đ m c a giao d ch. ủ

ọ ộ ớ ệ

• Ghi n i dung X: chép n i dung X t

vùng nh đ m c a giao

ớ ệ

i CSDL trên đĩa.

d ch vào l ị

• Th c t

- T T N C a o h K

-

t là th c hi n vi c ghi vào ự ế ự ệ ấ

u

i

ệ ộ ớ ể

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

11

: Write không nh t thi ế CSDL trên đĩa mà có th ghi t m trên b nh và ghi vào đĩa ạ mu n h n. ộ ơ

Ví dụ

• T là m t giao d ch chuy n 50 t ị

• Read(A);

• A=A-50;

• Write(A);

• Read(B);

• B=B+50;

- T T N C a o h K

-

• Write(B);

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

12

Tài kho n A sang B. ể ộ ừ ả

ACID

• Tính nguyên t Read(B)  ?

• Tính nh t quán (C): T ng A và B là không đ i khi th c hi n T

(A): S c x y ra sau Write(A) và tr c ử ự ố ả ướ

ệ ấ

(Ti n không t o ra ho c m t đi khi th c hi n giao d ch) ấ ự ề ạ ổ ệ ự ị ổ ặ

• T n t ệ ố ồ ạ c n ph i có tính nguyên t ầ

tr ng thái không nh t quán  ể ờ ở ạ ấ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

13

i th i đi m h th ng . ử ả

ACID

• Tính cô l p (I): ngay c khi A và C đ

ậ ả ỗ

• VD: t

c đ m b o cho m i ả ượ ả giao d ch, tr ng thái không nh t quán v n có th x y ra khi ể ả ẫ ấ m t s giao d ch x y ra đ ng th i. ị ộ ố ả ồ ờ ị

ạ ự ể ệ ấ ạ ờ

• X lý đ n gi n: th c hi n tu n t

ờ 1 giao d ch khác x y ra. i th i đi m không nh t quán t m th i khi th c hi n T  ị ả

các giao d ch  gi m hi u ầ ự ử ự ệ ệ ả ị

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

14

ả ơ năng h th ng. ệ ố

ACID

ả ử ả s x y ra s c m t d li u trên b ộ ự ố ấ ữ ệ

• Tính b n v ng (D): gi ề ữ ớ ữ ệ

• Đ m b o tính b n v ng:

nh , d li u trên đĩa không m t. ấ

• Đ m b o các thay đ i đã đ

c vi

t trên đĩa tr

c khi giao d ch

ượ

ế

ướ

ả k t thúc.

ả ế

• Thông tin v nh ng thay đ i do giao d ch đ

ượ

đ xây d ng l

t trên đĩa đ c vi ủ ế i sau s c . i CSDL khi h th ng kh i đ ng l ự ố ạ ệ ố

ề ữ ạ

ở ộ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

15

ề ữ ả ả

Các lo i s c (Failures)

ạ ự ố

• Computer failure (System crash)

• Transaction/System error: integer overflow, division by zero,

• Local errors/exception conditions detected by transaction: data

user’s interruption…

• Concurrency control enforcement

- T T N C a o h K

• Disk failure

-

u

• Physical problems and catastrophes: fire, theft…

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

16

not found

• Các thành ph n x lý giao d ch trong HQT CSDL

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

17

ầ ử ị

Gi

i thi u v Giao d ch

Thành ph n c a HQT CSDL ủ

• Đ m b o tính nguyên t

ả ả ử : thành ph n qu n tr giao d ch ả ầ ị ị

• Đ m b o tính b n v ng: thành ph n qu n tr ph c h i

(transaction management component).

ả ị ụ ồ ề ữ ả ả

• Đ m b o tính cô l p: thành ph n qu n tr c nh tranh

ầ (recovery management component).

ả ị ạ ả ả ậ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

18

ầ (concurrency control component)

Tình hu ng xem xét

• 2 giao d ch T1 và T2 nh sau

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

19

ư ị

ự ầ

ị ạ

S c n thi t c a ế ủ Thành ph n qu n tr c nh ả ầ tranh

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

20

ự ầ

ị ạ

S c n thi t c a ế ủ Thành ph n qu n tr c nh ả ầ tranh

CRASH

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

21

ự ầ

ị ạ

S c n thi t c a ế ủ Thành ph n qu n tr c nh ả ầ tranh

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

22

• Đi u ki n: 1 giao d ch ho t đ ng ạ ộ trên 1 b n sao c a CSDL th t. ậ ủ

1 th i đi m và th c hi n ự ề ể ờ ở ị ệ

ệ ả

Thành ph n qu n tr ph c h iồ đ n gi n ơ

• CSDL th t là file trên đĩa. M t con tr db_pointer l u trên đĩa ộ

ư ỏ

ậ ỏ ế ả và tr đ n b n sao hi n hành c a CSDL đó. ệ ủ

ị ộ ố ậ ộ ả ậ

• M t giao d ch mu n c p nh t CSDL, đ u tiên t o ra m t b n sao đ y đ c a CSDL.N u giao d ch b b d , b n sao m i b ớ ị xoá. B n sao cũ c a CSDL không b nh h

ầ ủ ủ ế ị

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

23

ng. ầ ạ ị ỏ ở ả ưở ị ả ủ ả

• N u giao d ch hoàn t

c bàn giao: t, nó đ c đ ượ ượ ế ấ ị

Thành ph n qu n tr ph c h iồ đ n gi n ơ

• Đ m b o r ng t

c vi

t

t c các trang c a b n sao m i đã đ ủ ả

ả ằ

ấ ả

ượ

ế

lên đĩa.

• Con tr đ

c c p nh t đ tr đ n b n sao m i; b n sao m i ả

ậ ể ỏ ế tr thành b n sao hi n hành c a CSDL. ệ

ỏ ượ ậ ả

• B n sao cũ b xoá đi. Giao d ch đ

c bàn c g i là đã đ i th i đi m s c p nh t con tr db_pointer ậ

c đ ượ ượ ỏ

ượ ọ ự ậ

ị ể

giao (committed) t c ghi lên đĩa. đ

ượ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

24

• S c giao d ch:

ự ố ị

Thành ph n qu n tr ph c h iồ đ n gi n ơ

i th i đi m b t kỳ tr

ướ

ế

c khi con tr ỏ ị ả

ượ ậ

• N u giao d ch th t b i t ị db_pointer đ h ưở

ờ ộ ng. Ta có th b d giao d ch b i xoá b n sao m i. ị

ấ ạ ạ ấ c c p nh t, n i dung cũ c a CSDL không b nh ậ ể ỏ ở

• M i khi giao d ch đ ậ

c bàn giao (committed), t trong CSDL đ c đ ượ ượ ệ ự t c các ấ ả c tr b i ỏ ở ượ ở

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

25

ị ỗ c p nh t mà nó đã th c hi n là ậ db_pointer.

• S c h th ng: ự ố ệ ố

Thành ph n qu n tr ph c h iồ đ n gi n ơ

ướ

ệ ố

ả ậ ượ ẽ ọ

c nhìn

• S c h th ng x y ra t c khi db_pointer đã i th i đi m tr ạ t lên đĩa. Khi đó, khi h th ng kh i c vi c c p nh t đ ế i, nó s đ c db_pointer và nh v y s th y n i dung ư ậ ẽ ấ ị

ộ ượ

ự ố ệ ố đ ượ ậ đ ng l ạ ộ g c c a CSDL – không hi u qu nào c a giao d ch đ ệ ố ủ th y trên CSDL. ấ

• S c h th ng x y ra sau khi db_pointer đã đ

c c p nh t lên

ự ố ệ ố

ượ ậ

ệ ố

ở ộ

- T T N C a o h K

ẽ ọ ậ

-

u

ậ i, nó s đ c db_pointer và s đĩa: Khi h th ng kh i đ ng l ạ ẽ t c các c p nh t đã th c hi n th y n i dung c a CSDL sau t ệ ậ ấ ả ộ ấ b i giao d ch. ở

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

26

• Vi c ghi db_pointer ph i là nguyên t

. ử ệ ả

Thành ph n qu n tr ph c h iồ đ n gi n ơ

ữ ả ế ả

• S th c thi này c c kỳ thi u hi u qu trong ng c nh CSDL ự ự l n, do s th c hi n m t giao d ch đòi h i ph i sao toàn b ộ ớ CSDL.

• S th c thi này không cho phép các giao d ch th c hi n đ ng

ự ự ự ệ ệ ị ả ộ ỏ

ự ệ ồ ị

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

27

th i v i các giao d ch khác. ự ự ờ ớ ị

• Các tr ng thái c a giao d ch

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

28

ủ ạ ị

Gi

i thi u v Giao d ch

Tr ng thái giao d ch

• Trên th c t

, m t giao d ch có th không hoàn t t công vi c  ể ộ ị ấ ệ

Giao d ch không hoàn thành (Uncommited). ự ế ị

• Tính nguyên t thái CSDL  t

ổ ạ ị

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

29

c rollback. : Giao d ch b b d này không thay đ i tr ng ử t c các thay đ i ph i đ ả ượ ấ ả ị ỏ ở ổ

Tr ng thái giao d ch

• M t giao d ch hoàn t

t g i là đ ộ ị ấ ọ

c bàn giao (committed) và c th c hi n b ng ượ ổ ượ ệ ằ ự

không th h y b nh ng thay đ i đ ể ủ ỏ ữ committed transaction.

• N u mu n thay đ i: th c hi n giao d ch bù (compensating ệ ị i s d ng.

ế ổ ố

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

30

ự transaction) thu c v ng ộ ề ườ ử ụ

Các tr ng thái c a giao d ch

• Ho t đ ng (Active): tr ng thái kh i đ u ở ầ

• Đ c bàn giao b ph n (Partially committed): khi l nh cu i

ạ ộ ạ

ệ ố

• Th t bai (Failed)

ượ cùng đ ộ ậ c th c hi n. ệ ự ượ

• B d (aborted)

• Đ c bàn giao (Committed): giao d ch thành công.

ỏ ở

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

31

ượ ị

Các tr ng thái c a giao d ch

• Giao d ch k t thúc: Committed ho c Aborted.

Committed

Partially Committed

Active

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

Failed

Aborted

32

ế ặ ị

X lý giao d ch đ ng th i ờ ị

• Khó khăn trong v n đ đ m b o s nh t quán d li u.

• Cách đ n gi n nh t: th c hi n tu n t ấ

ả ự ấ ữ ệ ề ả ấ

• M t giao d ch g m nhi u b

. ầ ự ự ệ ả ơ

I/O

• X lý trên CPU

• Tăng hi u su t s d ng CPU và đĩa. ấ ử ụ

c: ề ướ ồ ộ ị

- T T N C a o h K

-

• Tăng s l

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

ng giao d ch có th x lý trong m t đ n v th i ố ượ ộ ơ ị ờ ể ử ị

33

gian.

X lý giao d ch đ ng th i ờ ị

• M t s giao d ch khác bi

t v th i gian th c hi n. ộ ố ị ệ ề ờ ự ệ

• Th c hi n tu n t ệ

: ch đ i quá trình dài hoàn t t… ầ ự ự ờ ợ ấ

ề ấ ả

• Đ đ m b o tính nh t quán: h QT CSDL ph i đi u khi n s ể ự ệ trao đ i gi a các giao d ch đ ng th i – s đ đi u khi n c nh tranh (concurrency control scheme)

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

34

ể ả ổ ơ ồ ề ể ạ ả ữ ồ ờ ị

• Khái ni mệ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

35

L ch trình

L ch trình

• Giá tr A, B ban đ u là 1000 và 2000 ầ

• T1: Chuy n 50 t

• Read(A)

• A=A-50

• Write(A)

• Read(B)

- T T N C a o h K

-

• B=B+50

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

• Write(B)

36

tài kho n A sang tài kho n B. ể ừ ả ả

L ch trình

• T2: Chuy n 10% s d t

• Read(A)

• Temp=A*0.1

• A=A-Temp

• Write(A)

• Read(B)

- T T N C a o h K

-

• B=B+Temp

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

• Write(B)

37

tài kho n A sang tài kho n B. ố ư ừ ể ả ả

L ch trình

• Gi T2.

L ch trình 1

•  L ch trình 1

s 2 giao d ch này đ c th c hi n theo th t T1 r i đ n ả ử ị ượ ứ ự ự ệ ồ ế

T1

T2

• K t qu : A, B? ả

• A+B tr

ế

Read(A) A=A-50 … Write(B)

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

Read(A) Temp=A*0.1 … Write(B)

38

c và sau gd? ướ

L ch trình

• Gi T1.

• L ch trình?

ng h p giao d ch th c hi n theo th t T2 r i đ n s tr ả ử ườ ứ ự ự ệ ợ ị ồ ế

• K t qu ? ả

•  L ch trình

ế

- T T N C a o h K

th i gian các ch th đ ự ờ ị ượ ỉ c th c ự

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

39

hi n trong h th ng. : bi u di n trình t ễ ể ệ ố ị ệ

• L ch trình tu n t

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

40

ầ ự ị

L ch trình

L ch trình tu n t

ầ ự

• Khái ni m: Là l ch trình mà các ch th đ ộ

ự ỉ

ự ị ị

• N giao d ch  N! l ch trình tu n t

c th c hi n tu n t ệ ị ầ ự ị ượ ệ t m t giao d ch thì m i chuy n sang th c hi n đ n khi hoàn t ệ ể ớ ấ ế ch th c a giao d ch khác (Không có ch th c a giao d ch khác ị ủ ỉ ị ủ ỉ chen vào).

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

41

h p l khác nhau. ầ ự ợ ệ ị ị

L ch trình có x lý đ ng th i ờ ử

• Trên th c t v i N! ??? ớ

L ch trình 2

• Ví d :ụ

T1

T2

Read(A) A=A-50 Write(A)

- T T N C a o h K

-

u

Read(A) Temp=A*0.1 A=A-Temp Write(A)

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

Read(B) B=B+50 Write(B)

42

Read(B) …

(ch y đ ng th i): s l ch trình có th nh th nào ể ư ế ố ị ạ ờ ồ ự ế

L ch trình có x lý đ ng th i ờ ử

• T t c l ch trình có x lý đ ng th i đ u t

• K t qu : A, B? ả

ng đ ng nhau??? ờ ề ươ ấ ả ị ử ồ ươ

L ch trình 3

• Tr

ế

T1

T2

c và sau giao d ch ướ ị

Read(A) A=A-50

• Đ HĐH x lý c nh

A+B?

- T T N C a o h K

-

u

ử ể ạ

Read(A) Temp=A*0.1 A=A-Temp Write(A) Read(B)

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

43

Write(A) Read(B) B=B+50 Write(B)

tranh hay không?

L ch trình có x lý đ ng th i ờ ử

• Nhi m v c a h qu n tr CSDL là đ m b o tính nh t quán

ệ ấ ả ị

• Nhi m v c a thành ph n đi u khi n c nh tranh (concurrency ề

c a CSDL khi x lý giao d ch đ ng th i. ủ ồ ị ụ ủ ệ ả ử ả ờ

ể ạ ụ ủ ệ ầ

control component).

đ m b o l ch ủ ằ

ả ị c th c hi n có hi u qu nh m t l ch trình

• Đ m b o s nh t quán c a CSDL b ng cách ệ

ả ả ư ộ ị ả ự ấ ự ượ ệ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

44

ả trình đ tu n tầ ự.

• Tính kh tu n t

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

45

ả ầ ự

L ch trình

Tính kh tu n t

ả ầ ự

• Tính kh tu n t ả ầ ự là m t l ch trình ộ ị

ng đ (Serializability): M t l ch trình có tính kh ả ộ ị ng ầ ươ v i m t l ch trình tu n ộ ị t ươ ớ

• K t qu t

tu n t ầ ự t nào đó. ự

ng ả ươ ươ (Result Equivalent): phát sinh cùng

- T T N C a o h K

-

•  KQ t

tr ng thái cu i c a CSDL. ng đ ố ủ ế ạ

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

ng đ ng là ch a đ đ th hi n s t ng đ ng ươ ư ủ ể ể ệ ự ươ ươ

46

ươ (equivalent) c a 2 l ch trình. ủ ị

ầ ự

L ch trình tu n t ??? L ch trình kh tu n t

ả ầ ự

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

47

Quy

cướ

• Ch quan tâm thao tác Read và Write trên các d li u.

• Gi a Read(X) và Write(X) s có 1 dãy thao tác tùy ý trên b n ẽ

ữ ệ ỉ

ữ ả

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

48

sao c a h ng m c d li u X trong b nh đ m. ụ ữ ệ ộ ớ ệ ủ ạ

Bi u di n l ch trình ễ ị

L ch trình 3

L ch trình 3’

T1

T1

T2

T2

Read(A) Write(A)

Read(A) A=A-50 Write(A)

Read(A) Write(A)

Read(B) Write(B)

Read(A) Temp=A*0.1 A=A-Temp Write(A)

Read(B) Write(B)

- T T N C a o h K

-

Read(B) B=B+50 Write(B)

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

Read(B) B=B+Temp Write(B)

49

Bi u di n l ch trình ễ ị

L ch trình 3’

T1

T2

• S: R1(A) W1(A) R2(A) W2(A) R1(B) W1(B) R2(B) W2(B)

Read(A) Write(A)

Read(A) Write(A)

Read(B) Write(B)

Read(B) Write(B)

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

50

• Kh tu n t

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

51

ả ầ ự xung đ t ộ

L ch trình

Xung đ tộ

• Xung đ t (Conflict): 2 ch th xung đ t khi ta không th thay ị

ể ộ

th c hi n ộ đ i ổ th t ứ ự ự ỉ ệ c a chúng. ủ

• Xét 2 ch th Ii và Ij c a 2 giao d ch Ti và Tj t ủ

• Ii(X) và Ij(Y): không xung đ t.ộ

• Ii=Read(X) và Ij=Read(X): đ c cùng giá tr X b t k th t

ng ng. ị ỉ ị ươ ứ

- T T N C a o h K

Ii ấ ể ứ ự ọ ị

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

52

và Ij.

Xung đ tộ

• Ii=Read(X) và Ij=Write(X): xung đ t.ộ

• Ii=Write(X) và Ij=Read(X): t

• Ii=Write(X) và Ij=Write(X): th t

ng t ươ . ự

• Read(X) ti p theo sau b nh h

ng

ị ả

ế

ưở

- T T N C a o h K

-

• Ho c Tr ng thái CSDL b nh h

ng.

ị ả

ưở

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

53

ứ ự ự th c hi n s liên quan đ n ế ệ ẽ

Xung đ tộ

• V y có th t ng h p l

• 2 ch th trong m t l ch trình g i là xung đ t khi nó th a 3 đi u ọ

ể ổ ợ ạ ậ i nh sau: ư

ộ ị ề ỏ ộ

1.

Thu c v 2 giao d ch khác nhau

ộ ề

2.

Th c hi n trên cùng d li u X

ữ ệ

3.

Ít nh t m t ch th là Write(X) ỉ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

54

ị ỉ ki n sau: ệ

Ví dụ

L ch trình 3’

• 1 – 2: Không xét

T1

T2

• 2 – 3: Yes

1.

2.

Read(A) Write(A)

• 4 – 5: No

3.

4.

Read(A) Write(A)

• 6 – 7: Yes

5.

6.

Read(B) Write(B)

7.

8.

Read(B) Write(B)

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

55

T

ng đ

ươ

ươ

ng xung đ t ộ

• 2 l ch trình g i là t

ị ươ

ề ặ ị ộ ố ỉ

• VD: S1: R1(X), W2(X) và S2: W2(X), R1(X): không t

ng v m t xung đ t (conflict ng đ ươ ọ c a 2 ch th xung đ t gi ng nhau trong equivalent) n u th t ộ ứ ự ủ ế c 2 l ch trình. ị ả

ng ươ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

56

đ ng xung đ t. ươ ộ

Kh tu n t

ả ầ ự

xung đ t ộ

ộ ị ọ

• M t l ch trình S g i là kh tu n t ế

ng đ ả ầ ự ươ xung đ t (conflict ộ ng xung đ t v i 1 l ch trình ộ ớ ươ ị

serializable) n u nó t tu n t S’ nào đó. ầ ự

• Khi đó ta có th thay đ i th t ể ế

ứ ự ỉ c m t l ch trình tu n t S’ t các ch th không xung đ t ộ ng ươ ầ ự ộ ị

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

57

ng S. ổ trong S cho đ n khi ta đ ượ đ ươ

Chú ý

L ch trình 5

• A=1000, B=2000

T1

T3

• Xét T2 là giao d ch chuy n 10 t

B sang ể ị ừ

Read(A) A=A-50 Write(A)

• K t qu A, B?

A.

• L ch trình 5 có kh tu n t

ế ả

Read(B) B=B-10 Write(B)

ả ầ ự ị xung đ t hay ộ

- T T N C a o h K

Read(B) B=B+50 Write(B)

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

Read(A) A=A+10 Write(A)

58

không?

xung

ả ầ ự

Ki m tra kh tu n t ể đ tộ

• Xây d ng m t đ th có h

ự ướ ự

• G=(N, E):

• N={T1, T2, … , Tn}

• E là t p h p các cung. ợ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

59

ộ ồ ị (precedence graph) t ọ l ch trình S c n ki m tra. ầ ng, g i là đ th trình t ồ ị ể ừ ị

xung

ả ầ ự

Ki m tra kh tu n t ể đ tộ

• T o 1 cung Ti  Tj khi:

• Ti th c hi n Write(X) sau đó Tj th c hi n Read(X).

• Ti th c hi n Read(X) sau đó Tj th c hi n Write(X).

• Ti th c hi n Write(X) sau đó Tj th c hi n Write(X).

• L ch trình S là kh tu n t

• Chu trình?

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

60

xung đ t n u G không có chu trình. ả ầ ự ị ộ ế

Th t

kh tu n t

ứ ự

ả ầ ự

• Th t

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

61

c thông qua Topological sorting. ứ ự có th có đ ể ượ

Ví dụ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

62

Ví dụ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

63

ng d ng c a kh tu n t ủ

ả ầ ự

• Trên th c t

• N u giao d ch đ

, khó ki m tra tính kh tu n t c a l ch trình. ự ế ả ầ ự ủ ị ể

ệ ượ c ki m tra tính kh tu n t c th c hi n sau đó k t qu c a l ch trình ế , khi đó ta ph i h y b l ch ả ủ ị ả ủ ỏ ị ể

• Khi giao d ch đ

ế đ ượ trình n u nó không th a  Không th c t ự ả ầ ự ỏ . ự ế ế

ụ ấ ể ị

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

64

trình b t đ u và k t thúc. ị ắ ầ c g i liên t c, r t khó ki m soát khi nào l ch ượ ử ế

• M t s bài t p ậ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

65

ộ ố

L ch trình

Ví dụ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

66

Ví dụ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

67

1 s bài t p

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

68

1 s bài t p

• Cho đ th trình t ồ ị l ch trình S: ị

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

• L ch trình nào t

c a c a ự ủ ủ

ng ươ

69

đ ị ươ ng v i S: ớ

• Kh tu n t

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

70

view ả ầ ự

L ch trình

T

ng đ

ng view

ươ

ươ

c g i là t ng đ ng view (view ị ượ ọ ươ ươ

• 2 l ch trình S và S’ đ ỏ

• Có cùng t p h p các giao d ch. ợ

• V i m i d li u X, n u Ti th c hi n Read(X) trong S và giá tr ị ự

ế

ỗ ữ ệ c sinh ra b i giao d ch Tj thì Ti cũng ph i đ c giá tr X

ả ọ

ở ượ c sinh ra b i Tj trong S’.

ớ X đ đ ượ

• V i m i d li u X, giao d ch th c hi n Write(X) sau cùng trong

- T T N C a o h K

ị S cũng ph i th c hi n Write(X) cu i cùng trong S’.

ỗ ữ ệ ự ả

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

71

equivalent) n u th a: ế

T

ng đ

ng view

ươ

ươ

• Các đi u ki n đ m b o: ệ

• M i giao d ch đ c cùng m t giá tr trong c 2 l ch trình. ộ

• C 2 l ch trình cho ra k t qu tr ng thái h th ng nh nhau.

ệ ố

ả ạ

ư

ế

• Ngoài ra còn 1 s lo i t

ề ả ả

ng đ ng khác do các ng d ng ố ạ ươ ươ ứ ụ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

72

khác nhau đ a ra. ư

Kh tu n t

view

ả ầ ự

ọ ị

• Kh tu n t ả ầ ự tu n t ầ ự .ự t

L ch trình S

T1

T2

T3

Read(Q) Write(Q)

Write(Q)

Write(Q)

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

73

ng đ view (view serializable): 1 l ch trình g i là kh ả ng view v i 1 l ch trình tu n ầ ị view n u nó t ế ươ ươ ớ

Kh tu n t

view

ả ầ ự

• L ch trình kh tu n t

• L ch trình kh tu n t

xung đ t là kh tu n t view. ả ầ ự ị ả ầ ự ộ

xung ể không kh tu n t ả ầ ự

• Write mù: th c hi n ho t đ ng write mà không th c hi n read.

view có th ị ả ầ ự đ t  Do các write mù (blind write). ộ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

74

ạ ộ ự ự ệ ệ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

75

Giao d ch trong SQL

Giao d ch trong SQL

• Chu n SQL đ c t ẩ ng minh.

s b t đ u c a giao d ch m t cách không ặ ả ự ắ ầ ủ ộ ị

• Giao d ch đ

t ườ

• Commit tran

• Rollback tran

• Cho phép đ nh nghĩa giao d ch đ

ị ượ ế c k t thúc b i m t trong 2 l nh: ộ ệ ở

c th c hi n không kh tu n ị ị ượ ả ầ ự ệ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

76

.ự t

Các d ng read trong SQL

• Dirty read: Giao d ch T1 đ

ị ọ

c committed. N u T2 b h y b , giá tr đ c đ c c phép đ c nh ng thay đ i c a ổ ủ ữ ị ọ ượ ị ủ ỏ ượ ế

i và không chính xác. T2 ch a đ ư ượ c a T1 không t n t ủ ồ ạ

• Non-repeatable read: Giao d ch T1 đ c 1 giá tr t có giao d ch T2 thay đ i giá tr đó và T1 đ c l ổ giá tr đ

ị ừ ả ế i, T1 s th y ọ ạ ị ị b ng, n u ẽ ấ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

77

c c p nh t. ị ị ượ ậ ậ

Các d ng read trong SQL

ị ọ ố ự ả

ệ ị

ả ớ

• Phantoms: Giao d ch T1 đ c 1 s dòng trong b ng d a trên 1 s đi u ki n Where nào đó. Khi đó 1 giao d ch T2 khác thêm 1 ố ề dòng m i th a mãn đi u ki n Where c a T1 vào b ng đó. ỏ N u T1 đ c l ọ ạ – 1 dòng m i đ

ế

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

78

ủ i giá tr c a b ng s th y 1 bóng ma (phantom) ẽ ấ c đó ch a xu t hi n. ề ệ ị ủ ả c thêm vào, tr ớ ượ ướ ư ệ ấ

Các m c nh t quán trong ấ SQL

• Serializable: m c đ nh, v i nghĩa không cho phép:

• Dirty read

• Non-repeatable read

• Phantoms

• Repeatable read: cho phép Phantoms

• Read committed: ch không cho phép Dirty read.

ặ ị ớ

- T T N C a o h K

-

• Read uncommitted: cho phép t

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

79

t c . ấ ả

Các m c nh t quán trong ấ SQL

Isolation level

Dirty Reads

Non-repeatable reads Phantom reads

Concurrency control

Yes

Yes

Yes

Pessimistic

READ UNCOMMITTED

No

Yes

Yes

Pessimistic

READ COMMITTED (with locking)

No

Yes

Yes

Optimistic

READ COMMITTED (with snapshot)

- T T N C a o h K

-

u

No

No

Yes

Pessimistic

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

REPEATABLE READ

SNAPSHOT

No

No

No

Optimistic

80

SERIALIZABLE

No

No

No

Pessimistic

Cú pháp SQL

• BEGIN { TRAN | TRANSACTION }

• [ { transaction_name | @tran_name_variable }

• [ WITH MARK [ 'description' ] ]

• ]

• [ ; ]

- T T N C a o h K

-

u

• WITH MARK: ch đ nh giao tác s đ ỉ

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

81

• VD:

• BEGIN TRAN T1

ẽ ượ ị c đánh d u trong log ấ

Cú pháp SQL

• BEGIN TRAN T2

• SELECT * FROM NHANVIEN

• COMMIT TRAN

• L nh xem thông tin v thi

t l p hi n t i trên SQL: ệ ề ế ậ ệ ạ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

82

DBCC USEROPTIONS

READ UNCOMMITED

• Cho phép đ c c d li u đang trong x lý

m t giao tác ch a ử ở ộ ư

• Đây là m c th p nh t, cho phép c 3 ki u đ c d li u.

ọ ả ữ ệ t khác (uncommited) hoàn t ấ

• Cú pháp SQL:

• SET TRANSACTION ISOLATION LEVEL READ

ọ ữ ệ ứ ể ả ấ ấ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

83

UNCOMMITTED

READ UNCOMMITED

• BEGIN TRAN T1

• BEGIN TRAN T2

• SELECT * FROM

• INSERT INTO

• COMMIT TRAN

NHANVIEN

• WAITFOR DELAY

NHANVIEN VALUES ('NV10','A','B','C','1999-1- 22','SU VAN HANH','NAM',88888,'P1')

- T T N C a o h K

-

u

• ROLLBACK TRAN T1

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

84

'00:00:10'

READ COMMITED

• M c đ nh c a SQL Server. ủ

ặ ị

• Ch đ c các d li u đã x lý hoàn t ữ ệ

• Do c ch lock c a SQL Server.

t (commited) ỉ ọ ử ấ

• Cú pháp SQL:

• SET TRANSACTION ISOLATION LEVEL READ

ơ ế ủ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

85

COMMITTED

REPEATABLE READ

• Tình hu ng trong khi đang truy xu t d li u l

ự ậ

ấ ữ ệ ạ m t giao tác khác d n đ n s không nh t ế ự ẫ i có s c p ấ ở ộ ậ ữ ệ

• Do đó c n đ n REPEATABLE READ

ố nh t d li u đó quán v d li u. ề ữ ệ

• Cú pháp:

• SET TRANSACTION ISOLATION LEVEL REPEATABLE

ế ầ

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

86

READ

REPEATABLE READ

• BEGIN TRAN

• SET TRANSACTION ISOLATION LEVEL READ COMMITTED

• UPDATE NHANVIEN SET

SHORTUPDATE

• SET TRANSACTION ISOLATION LEVEL REPEATABLE READ

• COMMIT TRAN SHORTUPDATE

• GO

- T T N C a o h K

• DBCC USEROPTIONS

-

u

i

• INSERT INTO

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

87

• BEGIN TRAN REPEATREAD

HONV='A' WHERE MANV='NV10'

• SELECT * FROM

NHANVIEN VALUES ('NV10','A','B','C','1999-1- 22','SU VAN HANH','NAM',88888,'P1')

• DELETE FROM

NHANVIEN

• WAITFOR DELAY

NHANVIEN WHERE

• SELECT * FROM

MANV='NV10' '00:00:05'

• COMMIT TRAN

NHANVIEN

REPEATREAD

• SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

• SET TRANSACTION ISOLATION LEVEL READ

• SET TRANSACTION ISOLATION LEVEL READ

UNCOMMITTED

• SET TRANSACTION ISOLATION LEVEL REPEATABLE

COMMITTED

- T T N C a o h K

-

u

i

U G S

ữ d ở s ơ c ị r t n ả u q ệ H

l

88

READ

H t!ế

ng 21

Tham kh o: Ch ươ ả Fundamentals of Database Systems