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

bài giảng hệ quản trị cơ sở dữ liệu - ths. nguyễn minh vi

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 (3.65 MB, 113 trang )

Quản lý truy xuất
đồng thời
Nội dung
 Các vấn đề trong truy xuất đồng thời
 Kỹ thuật khóa (Locking)
 Kỹ thuật nhãn thời gian (Timestamps)
 Kỹ thuật xác nhận hợp lệ (Validation)

Nội dung
 Các vấn đề trong truy xuất đồng thời
 Kỹ thuật khóa (Locking)
 Kỹ thuật nhãn thời gian (Timestamps)
 Kỹ thuật xác nhận hợp lệ (Validation)

Các vấn đề trong truy xuất đồng thời
 Mất dữ liệu đã cập nhật (lost updated)
 Không thể đọc lại (unrepeatable read)
 Bóng ma (phantom)
 Đọc dữ liệu chưa chính xác (dirty read)

Mất dữ liệu đã cập nhật
(lost updated)
 Xét 2 giao tác


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

T
2
Read(A)
A:=A+20


Write(A)
T
1
Read(A)
A:=A+10
Write(A)
t
1
t
2
t
3
t
4
t
5
t
6
Read(A)

A=50

T
2
T
1
Read(A)

A:=A+10


Write(A)

A:=A+20

Write(A)

A=60

A=70

Dữ liệu đã cập
nhật tại t
4
của T
1

bị mất vì đã bị ghi
chồng lên ở thời
điểm t
6
Không thể đọc lại
(unrepeatable read)
 Xét 2 giao tác


 Giả sử T1 và T2 được thực hiện đồng thời
T
2
Read(A)
Print(A)

Read(A)
Print(A)
T
1
Read(A)
A:=A+10
Write(A)
t
1
t
2
t
3
t
4
t
5
t
6
Read(A)

A=50

T
2
T
1
Read(A)

A:=A+10


Write(A)

Print(A)

Read(A)

t
7
Print(A)

A=50
A=50
A=60
A=60
T
2
tiến hành
đọc A hai lần
thì cho hai kết
quả khác nhau

Bóng ma (phantom)
 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?






mất 50 ???
t
1
t
2
t
3
t
4
t
5
t
6
Read(A)

T
2
T
1
Read(A)

A:=A-50

Write(A)

Read(B)

Print(A+B)


t
7
Read(B)

A=70
A=20
A+B=70
A=70, B=50

A=20
B=50
B:=B+50

Write(B)

t
8
t
9
Đọ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
t
1
t
2
t
3
t

4
t
5
t
6
Read(A)

T
2
T
1
Read(A)

A:=A+10

Write(A)

Print(A)

Abort

T
2
đã đọc dữ liệu được ghi bởi T
1
nhưng sau đó T
1
yêu cầu hủy việc ghi
Nội dung
 Các vấn đề trong truy xuất đồng thời

 Kỹ thuật khóa (Locking)
 Khóa 2 giai đoạn
 Khóa đọc viết
 Khóa đa hạt
 Nghi thức cây
 Kỹ thuật nhãn thời gian (Timestamps)
 Kỹ thuật xác nhận hợp lệ (Validation)

Kỹ thuật khóa
 Làm thế nào để bộ lập lịch ép buộc 1 lịch phải
khả tuần tự?
 Bộ lập lịch với cơ chế khóa (locking scheduler)
 Có thêm 2 hành động
• Lock
• Unlock

Scheduler
Lock
table
Lịch khả tuần
tự
T
1
T
2
… T
n
Kỹ thuật khóa
 Các giao tác trước khi muốn đọc/viết lên 1 đơn vị dữ liệu phải phát
ra 1 yêu cầu xin khóa (lock) đơn vị dữ liệu đó

 Lock(A) hay l(A)
 Yêu cầu này được bộ phận quản l{ khóa xử l{
 Nếu yêu cầu được chấp thuận thì giao tác mới được phép đọc/ghi lên
đơn vị dữ liệu




 Sau khi thao tác xong thì giao tác phải phát ra lệnh giải phóng đơn
vị dữ liệu (unlock)
 Unlock(A) hay u(A)
Element Transaction
A T
1
Lock table
… …
Lock Manager
T
1
: Lock(A)
Kỹ thuật khóa
 Qui tắc
 Giao tác đúng đắn


 Lịch thao tác hợp lệ
T
i
: … l(A) … r(A) / w(A) … u(A) …
S : … l

i
(A) ……………… u
i
(A) …
không có l
j
(A)
Kỹ thuật khóa
 Ví dụ
T
2
T
1
Read(A,s)
s:=s*2
t:=t+100
Read(A,t)
t:=t+100
Write(A,t)
Read(B,t)
Write(B,t)
s:=s*2
Write(A,s)
Read(B,s)
Write(B,s)
S

Lock(A)
Unlock(A)
Lock(A)

Unlock(A)
Lock(B)
Unlock(B)
Lock(B)
Unlock(B)
Kỹ thuật khóa
 Cho biết lịch có hợp lệ? Giao tác nào là đúng?
T
2
T
1
Read(B)
Read(A)
Write(B)
Write(B)
Read(B)
S
1
Lock(A)
Unlock(A)
Unlock(B)
Lock(B)
Unlock(B)
Lock(B)
Unlock(B)
T
3
T
2
T

1
Read(B)
Read(A)
Write(B)
Read(B)
S
2
Lock(A)
Unlock(A)
Lock(B)
Lock(B)
Unlock(B)
Unlock(B)
T
3
Lock(B)
Write(B)
Kỹ thuật khóa
 Cho biết lịch có hợp lệ? Giao tác nào là đúng?
T
2
T
1
Read(B)
Read(A)
Write(B)
Write(B)
Read(B)
S
3

Lock(A)
Unlock(A)
Lock(B)
Unlock(B)
Lock(B)
Unlock(B)
Lock(B)
Unlock(B)
T
3
Kỹ thuật khóa
 Nếu lịch S hợp lệ thì S có khả tuần tự không?
Write(B,s); Unlock(B)
T
2
T
1
s:=s*2
t:=t+100
t:=t+100
Write(A,t); Unlock(A)
Write(B,t); Unlock(B)
s:=s*2
Write(A,s); Unlock(A)
S

Lock(A); Read(A,t)
Lock(A); Read(A,s)
Lock(B); Read(B,s)
Lock(B); Read(B,t)

A B
25 25
125
50
250
150
Kỹ thuật khóa
 Kiểm tra tính khả tuần tự
 Input : Lịch S được lập từ n giao tác xử l{ đồng thời
T
1
, T
2
, …, T
n
theo kỹ thuật khóa đơn giản
 Output : S khả tuần tự hay không?

 Xây dựng 1 đồ thị có hướng G
 Mỗi giao tác T
i
là 1 đỉnh của đồ thị
 Nếu một giao tác T
j
phát ra Lock(A) sau một giao tác T
i

phát ra Unlock(A) thì sẽ vẽ cung từ T
i
đến T

j
, i≠j
 S khả tuần tự nếu G không có chu trình
Kỹ thuật khóa

B3
G không có chu trình => S khả
tuần tự
theo thứ tự T
1
thực hiện trước
rồi tới T
2

G B2
T
1
T
2
S

T
2
T
1
Read(A)
Read(A)
A:=A-10
Print(A)
Write(A)

Read(A)
Print(A)
Lock(A)
Unlock(A)
Lock(A)
Unlock(A)
T
2
B1
T
1
Kỹ thuật khóa
B3
G có chu trình => S không khả
tuần tự
theo thứ tự T
1
thực hiện trước
rồi tới T
2

T
2
B1
T
1
T
2
T
1

Read(A,s)
s:=s*2
t:=t+100
Read(A,t)
t:=t+100
Write(A,t)
Read(B,t)
Write(B,t)
s:=s*2
Write(A,s)
Read(B,s)
Write(B,s)
S

Lock(A)
Unlock(A)
Lock(A)
Unlock(A)
Lock(B)
Unlock(B)
Lock(B)
Unlock(B)
G B2
T
1
T
2
Nội dung
 Các vấn đề trong truy xuất đồng thời
 Kỹ thuật khóa (Locking)

 Khóa 2 giai đoạn
 Khóa đọc viết
 Khóa đa hạt
 Nghi thức cây
 Kỹ thuật nhãn thời gian (Timestamps)
 Kỹ thuật xác nhận hợp lệ (Validation)

Kỹ thuật khóa 2 giai đoạn
(2PL: 2 phase lock)
 Qui tắc
 Giao tác 2PL
S : … l
i
(A) ………………… u
i
(A) …
không có lock không có unlock
t
EOT BOT
Phase lock Phase
unlock
Đơn vị
dữ liệu
giữ
lock
của T
i
Thực hiện xong hết tất
cả các yêu cầu lock rồi
mới tiến hành unlock

Kỹ thuật khóa 2 giai đoạn


T
1
Lock(A)
Read(A)
Lock(B)
Read(B)
B:=B+A
Write(B)
Unlock(A)
Unlock(B)
T
2
Lock(B)
Read(B)
Lock(A)
Read(A)
A:=A+B
Write(A)
Unlock(A)
Unlock(B)
T
3
Lock(B)
Read(B)
B=B-50
Write(B)
Unlock(B)

Lock(A)
Read(A)
A=A+50
Write(A)
Unlock(A)
T
4
Lock(A)
Read(A)
Unlock(A)
Lock(B)
Read(B)
Unlock(B)
Print(A+B)
Thỏa nghi thức khóa
2 giai đoạn Không thỏa nghi thức
khóa 2 giai đoạn
Kỹ thuật khóa 2 giai đoạn

T
2
T
1
S

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

Lock(B); Ulock(A)
Read(B,t); t:=t*2
Write(B,t); Unlock(B)
s:=s*2; Write(A,s)
Lock(A); Read(A,s)
Lock(B)
Chờ
T
2
T
1
Read(A,s)
s:=s*2
t:=t+100
Read(A,t)
t:=t+100
Write(A,t)
Read(B,t)
Write(B,t)
s:=s*2
Write(A,s)
Read(B,s)
Write(B,s)
S

Kỹ thuật khóa 2 giai đoạn
 Định l{
S thỏa qui tắc (1), (2), (3)  S conflict-serializable
 Chứng minh
 Giả sử G(S) có chu trình

 T
1
 T
2
 … T
n
 T
1

 T
1
thực hiện lock những đơn vị dữ liệu được unlock bởi T
n

 T
1
có dạng … lock … unlock … lock
 Điều này vô l{ vì T
1
là giao tác thỏa 2PL
 G(S) không thể có chu trình
 S conflict-serializable
Kỹ thuật khóa 2 giai đoạn
 Chú ý
T
2
T
1
s:=s*2
S


Lock(B)
Lock(A)
t:=t+100
Read(A,t)
Lock(B)
Write(A,t)
Write(B,s)
Không xin
được lock

Chờ
Lock(A)
Read(B,s)
Không xin
được lock

Chờ

×