Tải bản đầy đủ (.pdf) (9 trang)

Bài giảng hệ quản trị cơ sở dữ liệu chương 5 lê thị minh nguyện

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.19 MB, 9 trang )

8/25/2017

Nội dung
1. Các vấn đề trong truy xuất đồng thời
2. Cách giải quyết vấn đề
3. Chế độ khóa

Chương 5.
Xử lý truy xuất đồng thời
GV: Lê Thị Minh Nguyện
Email:

Hệ quản trị Cơ sở dữ liệu

2

1. Các vấn đề trong truy xuất đồng thời

1.1. Mất dữ liệu đã cập nhật (lost updated)

1.1. Mất dữ liệu đã cập nhật (lost updated)

 Xét 2 giao tác
T1

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

1.2. Khơng thể đọc lại (unrepeatable read)


1.3. “Bóng ma” (phantom)

Read(A)
A:=A+20
Write(A)

 Giả sử T1 và T2 được thực hiện đồng thời

1.4. Đọc dữ liệu chưa chính xác (dirty read)

 Dữ liệu đã cập nhật tại t4 của T1

bị mất vì đã bị ghi chồng lên ở
thời điểm t6

A=50 T1
t1
Read(A)
t2
A:=A+10
t3
Write(A)
t4
t5
t6
A=60

Hệ quản trị Cơ sở dữ liệu

3


Hệ quản trị Cơ sở dữ liệu

T2
Read(A)

A:=A+20
Write(A)

A=70
4

1


8/25/2017

1.1. Mất dữ liệu đã cập nhật (lost updated) (tt)

1.1. Mất dữ liệu đã cập nhật (lost updated) (tt)

Tình trạng xảy ra khi hai hay nhiều thao tác của các giao tác
khác nhau cùng yêu cầu truy cập một mục dữ liệu. Các dữ
liệu đã được các thao tác trước cập nhật nhưng lại bị các thao
tác sau cập nhật lại làm thay đổi kết quả mong muốn.

• Ví dụ: nhà sách còn 500 cuốn sách:
Từ lúc T1 nhân viên A yêu cầu mua 400 cuốn sách từ khách hàng X.
Cũng từ T1 nhân viên B yêu cầu mua 300 cuốn từ khách hàng Y.
A và B đọc dữ liệu thấy 500 cuốn nên đều đồng ý bán.

Vào lúc T2 nhân viên A sẽ thực hiện cập nhật số sách từ 500 thành 100.
Vào lúc T3 nhân viên B sẽ cập nhật số sách từ 500 thành 200

• Như vậy thao tác cập nhật của A khơng có tác dụng hay dữ liệu của A cập
nhật sẽ bị mất vì B cập nhật sau.
Hệ quản trị Cơ sở dữ liệu

5

• Xét 2 giao tác

• Ví dụ: giả sử nhà sách cịn 200 cuốn sách.
T2

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

6

1.2. Khơng thể đọc lại (unrepeatable read) (tt)

1.2. Không thể đọc lại (unrepeatable read)
T1

Hệ quản trị Cơ sở dữ liệu

Vào lúc T1 nhân viên A bán cho khách 150 cuốn, sẽ thực hiện cập nhật sách từ
200 thành 50. (giao dịch chưa hồn thành chẳng hạn vì việc giao nhận tiền chưa
xong).

Sau đó lúc T2, B nhận được yêu cầu mua 100 cuốn sách, nếu B đọc được dữ liệu
chưa hồn tất thì B sẽ từ chối bán 100 cuốn sách này.
Nếu vào lúc T3 vì lý do nào đó chẳng hạn khơng đủ tiền khách hàng của A
không mua 150 cuốn sách nữa. Giao tác bán hàng của A sẽ không thực hiện nên
quay về trạng thái số sách còn lại là 200
Nhưng B từ chối khách hàng.
Nếu B không đọc được dữ liệu từ lúc T1 đến T3 thì sẽ như thế nào?

Read(A)
Print(A)
Read(A)
Print(A)

• Giả sử T1 và T2 được thực hiện đồng thời
A=50

• T2 tiến hành đọc A hai lần thì
cho hai kết quả khác nhau

t1

T2

Read(A)
Read(A)

A=50

Print(A)


A=50

t6

Read(A)

A=60

t7

Print(A)

A=60

t2
t3

A:=A+10

t4
t5

Hệ quản trị Cơ sở dữ liệu

T1

Write(A)

7


Hệ quản trị Cơ sở dữ liệu

8

2


8/25/2017

1.3. “Bóng ma” (phantom)

Đọc dữ liệu chưa chính xác (dirty read)

• Xét 2 giao tác T1 và T2 được xử lý đồng thời

• Xét 2 giao tác T1 và T2 được xử lý đồng thời

• A và B là 2 tài khoản
• T1 rút 1 số tiền ở tài khoản A rồi đưa vào tài khoản B
• T2 kiểm tra đã nhận đủ tiền hay chưa?
A=70, B=50

T1

• T2 đã đọc dữ liệu được ghi
bởi T1 nhưng sau đó T1 yêu
cầu hủy việc ghi

T2


t1

Read(A)

t2

A:=A-50

t3

Write(A)

A=70

T1
t1

Read(A)

t2

A:=A+10

t3

Write(A)

A=20

t5


t4

A=20

t6

t5

Read(B)

B=50

Print(A+B)

A+B=70

t6
t7

Read(B)

t8

B:=B+50

t9

Write(B)


Read(A)

t4
Read(A)

T2

Print(A)
Abort

mất 50 ???

Hệ quản trị Cơ sở dữ liệu

9

2. Cách giải quyết vấn đề

Hệ quản trị Cơ sở dữ liệu

10

3. Chế độ khóa

• Các hệ quản trị CSDL thương mại đã làm hết rồi!!!!!!
• Thực hiện cơ chế Transaction và cơ chế khoa
• Trước khi transaction đọc hoặc chỉnh sửa dữ liệu, nó cần
được bảo vệ và tránh ảnh hưởng của các transaction khác
đang chỉnh sửa cùng dữ liệu.


3.1. Các cấp độ khóa
3.2. Các mức cơ lập cho giao tác
3.3. Live lock

3.4. Dead lock

Hệ quản trị Cơ sở dữ liệu

11

Hệ quản trị Cơ sở dữ liệu

12

3


8/25/2017

3.1. Các cấp độ khóa

3.1. Các cấp độ khóa (tt)
• Các kiểu lock
• Binary Locks

• Các mức Locking
• Database level
• Table level

• Có 2 trạng thái: locked (1) or unlocked (0).


• Page level

• Nếu 1 object bị lock bởi 1 transaction, khơng transaction nào
được sử dụng object đó

• Row level
• Field (attribute) level

• Nếu 1 object là unlocked, bất kỳ transaction nào cũng có thể
lock object đó để sử dụng

Bất kể mức khóa nào DBMS có thể
dùng 2 loại khóa khác nhau: Binary và
Shared / Exclusive

• 1 transaction phải “unlock”object sau khi hồn tất.

Hệ quản trị Cơ sở dữ liệu

13

Ví dụ

14

Hệ quản trị Cơ sở dữ liệu

14


3.1. Các cấp độ khóa (tt)
S

T1

T2

• Các kiểu lock
• Shared Locks

Lock(A)
Read(A,t)
t:=t+100
Write(A,t)
Unlock(A)

• Một shared lock tồn tại khi các transaction đồng thời đọc dữ
liệu

Lock(A)
Read(A,s)
s:=s*2
Write(A,s)
Unlock(A)
Lock(B)
Read(B,s)
s:=s*2
Write(B,s)
Unlock(B)


• Một shared lock không làm đụng độ dữ liệu khi các transaction
đồng thời chỉ đọc dữ liệu
• Một shared lock được gán khi transaction muốn đọc dữ liệu và
dữ liệu đó không tồn tại exclusive lock.

Lock(B)
Read(B,t)
t:=t+100
Write(B,t)
Unlock(B)
Hệ quản trị Cơ sở dữ liệu

15

Hệ quản trị Cơ sở dữ liệu

16

4


8/25/2017

3.1. Các cấp độ khóa (tt)

3.1. Các cấp độ khóa (tt)

• Các kiểu lock
• Exclusive Locks


• Các kiểu lock
• Exclusive Locks

• Tồn tại khi transaction ghi dữ liệu

• Tồn tại khi transaction ghi dữ liệu

• Được sử dụng khi có khả năng đụng độ dữ liệu

• Được sử dụng khi có khả năng đụng độ dữ liệu.

• Một exclusive lock sẽ được gán khi transaction muốn ghi dữ
liệu và dữ liệu đó chưa bị lock

• Một exclusive lock sẽ được gán khi transaction muốn ghi dữ
liệu và dữ liệu đó chưa bị lock

• Được dùng cho thao tác sửa đổi dữ liệu như lệnh INSERT,
UPDATE hay DELETE. Bảo đảm là nhiều lệnh cập nhật không
thực hiện trên cùng 1 tài nguyên cùng 1 lúc

• Được dùng cho thao tác sửa đổi dữ liệu như lệnh INSERT,
UPDATE hay DELETE. Bảo đảm là nhiều lệnh cập nhật không
thực hiện trên cùng 1 tài nguyên cùng 1 lúc

Hệ quản trị Cơ sở dữ liệu

17

Hệ quản trị Cơ sở dữ liệu


3.1. Các cấp độ khóa (tt)

3.2. Các mức cơ lập cho giao tác

• Các kiểu lock
• Exclusive Locks

• Read Uncommitted

• Ví dụ: nếu lệnh Update sửa đổi các hàng trong một bảng mà
lệnh này có kết nối (join) với 1 bảng khác thì sẽ cần bao
nhiêu khóa?

• Một khóa shared cho các hàng đọc được trong bảng kết nối
• Một khóa exclusive cho các hàng được cập nhật trong bảng
update.

Hệ quản trị Cơ sở dữ liệu

19

18

• Read Committed
• Repeatable Read

• Serializable

Hệ quản trị Cơ sở dữ liệu


20

5


8/25/2017

Read Committed

Read Uncommitted

• Đặc điểm:

Đặc điểm:
Khơng thiết lập Shared Lock trên những đơn vị dữ liệu cần đọc. Do đó không
phải chờ khi đọc dữ liệu (kể cả khi dữ liệu đang bị lock bởi giao tác khác)
Vẫn tạo Exclusive Lock trên đơn vị dữ liệu được ghi, Exclusive Lock được giữ
cho đến hết giao tác
Ưu điểm:
•Tốc độ xử lý rất nhanh
•Khơng cản trở những giao tác
khác thực hiện việc cập nhật dữ
liệu

Nhược điểm:
Có khả năng xảy ra mọi vấn đề khi xử lý
đồng thời :
• Dirty Reads
• Unrepeatable Reads

• Phantoms
• Lost Updates
Hệ quản trị Cơ sở dữ liệu

• Đây là mức độ cơ lập mặc định của SQL Server
• Tạo Shared Lock trên đơn vị dữ liệu được đọc, Shared Lock được giải phóng
ngay sau khi đọc xong dữ liệu
• Tạo Exclusive Lock trên đơn vị dữ liệu được ghi, Exclusive Lock được giữ cho
đến hết giao tác
Ưu điểm:
• Giải quyết vấn đề Dirty Reads
• Shared Lock được giải phóng ngay,
khơng cần phải giữ cho đến hết giao
tác nên không cản trở nhiều đến thao
tác cập nhật của các giao tác khác.

21

Repeatable Read

Nhược điểm:
• Chưa giải quyết được vấn đề
Unrepeatable
Reads,
Phantoms,Lost Updates
• Phải chờ nếu đơn vị dữ liệu cần đọc
đang được giữ khoá ghi (xlock)

Hệ quản trị Cơ sở dữ liệu


22

Serializable

Đặc điểm:
• Tạo Shared Lock trên đơn vị dữ liệu được đọc và giữ shared lock này đến hết giao
tác => Các giao tác khác phải chờ đến khi giao tác này kết thúc nếu muốn cập nhật,
thay đổi giá trị trên đơn vị dữ liệu này .
• Tạo Exclusive Lock trên đơn vị dữ liệu được ghi, Exclusive Lock được giữ cho đến
hết giao tác.
Nhược điểm:
•Ưu điểm:

•Chưa giải quyết được vấn đề Phantoms.

Giải quyết vấn đề Dirty Reads và

•Phải chờ nếu đơn vị dữ liệu cần đọc đang được

Unrepeatable Reads

giữ khố ghi (xlock)
•Shared lock được giữ đến hết giao tác ==> cản

• Đặc điểm:
• Tạo Shared Lock trên đơn vị dữ liệu được đọc và giữ shared
lock này đến hết giao tác => Các giao tác khác phải chờ đến
khi giao tác này kết thúc nếu muốn cập nhật, thay đổi giá trị
trên đơn vị dữ liệu này .
• Khơng cho phép Insert những dịng dữ liệu thỏa mãn điều

kiện
• thiết lập Shared Lock (sử dụng Key Range Lock) ==>
Serializable = Repeatable Read + Giải quyết Phantoms
• Tạo Exclusive Lock trên đơn vị dữ liệu được ghi, Exclusive
Lock được giữ cho đến hết giao tác.

trở việc cập nhật dữ liệu của các giao tác khác
Hệ quản trị Cơ sở dữ liệu

23

Hệ quản trị Cơ sở dữ liệu

24

6


8/25/2017

Serializable (tt)

Bảng tóm tắt

Ưu điểm:
Giải quyết thêm được vấn đề Phantoms
Mức Isolation

Dirty read


Nonrepeatable read

Phantom read

Nhược điểm:

Read Uncommitted

Yes

Yes

Yes

SET TRANSACTION ISOLATION LEVEL READ COMMITTED

• Phải chờ nếu đơn vị dữ liệu cần đọc đang được giữ khố ghi (xlock)
• Cản trở nhiều đến việc cập nhật dữ liệu của các giao tác khác

Read Committed

No

Yes

Yes

SET TRANSACTION ISOLATION LEVEL READ COMMITTED

Repeatable read


No

No

Yes

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ

Serializable

No

No

No

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

Hệ quản trị Cơ sở dữ liệu

25

3.3. Live lock

Hệ quản trị Cơ sở dữ liệu

26

Hệ quản trị Cơ sở dữ liệu


28

3.3. Live lock (tt)

• Khóa sống (live lock): khóa nhưng khơng giải phóng làm
cho các giao tác phải chờ vơ tận
• T1 u cầu khóa trên B, T2 u cầu khóa trên B

• T1 yêu cầu trước nên B được T1 khóa, nhưng T1 khơng giải
phóng B nên T2 khơng thể khóa B mà phải chờ vô tận

Hệ quản trị Cơ sở dữ liệu

27

7


8/25/2017

3.4. Dead lock

3.4. Dead lock (tt)

• Khóa chết (dead lock): trường hợp 2 hay nhiều giao tác chờ
đợi lẫn nhau. Giả sử T1 đang khóa A và chờ B được giải
phóng để khóa; trong khi T2 đang khóa B và chờ A được giải
phóng để khóa A. Các yêu cầu khóa A,B như vậy dẫn đến sự
chờ trở nên vơ hạn.


• Kỹ thuật ngăn ngừa deadlock
• Ép người viết chương trình
viết

khơng

bao

giờ

deadLock có thể xảy ra 
ngăn ngừa deadlock
• HQT

theo

dõi

nếu



deadlock sẽ báo cho admin
biết để xử lý
Hệ quản trị Cơ sở dữ liệu

29

3.4. Dead lock (tt)

• Giải quyết Deadlock
• Hủy tất cả  khơng phải là
cách giải quyết tốt
• Hủy giao tác gây ra
deadlock. Giao tác nào gây
ra?
• Dùng thời gian chờ.
• Dùng đồ thị chờ

30

3.4. Dead lock (tt)
• Đồ thị chờ

• Ngăn ngừa Deadlock
• Sắp xếp các đơn vị dữ liệu theo
một thứ tự cố định và các giao
tác yêu cầu lock trên chúng
theo thứ tự này.
• Các giao tác chờ lần nhau 
deadlock. Các transaction chờ
theo 1 chiều nhất định  ngăn
ngừa deadlock.

• Khi có trình trạng deadlock xảy ra, hệ thống hủy trình
trạng deadlock.
• Dùng đồ thị chờ để phát hiện deadlock






Cho S là lịch giao tác của các giao tác T1, T2,.., Tn.
Đồ thị có đỉnh là các giao tác.
Cung có hướng Ti  Tj nếu Ti phải chờ Tj
Đồ thị có chu trình  Deadlock

• Để giải quyết: hủy đỉnh (ứng với giao tác) có nhiều cung vào ra
nhất.
31

32

8


8/25/2017

Ví dụ

Ví dụ
T1
L(A); R(A)

1
2
3
4
5
6

7
8

T2

T3

T4
1
2
3
4
5
6
7
8

L(C); R(C)
L(B); R(B)
L(D); R(D)
L(A)

 Chờ
L(B)

L(C)

 Chờ

 Chờ


T1

T2

T3

L(A)

 Chờ

T1
L(A); R(A)

T3

T4

L(C); R(C)
L(B); R(B)
L(D); R(D)
L(A)
L(C)
L(A)

L(B)

T1

T4


T2

T2

T3

33

T4

34

Giải quyết deadlock trong SQL server

Hệ quản trị Cơ sở dữ liệu

35

Hệ quản trị Cơ sở dữ liệu

36

9



×