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

Hệ quản trị CSDL Tranh chấp đồng thời ppt

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.43 MB, 31 trang )

Hệ quản trị CSDL
Tranh chấp đồng thời
Trình bày: Hồ Thị Hoàng Vy
1
Nội dung
Transaction
Tranh chấp đồng thời
Xử lý tranh chấp đồng thời
Deadlock
Trình bày các tình huống tranh chấp và cách xử lý
Tránh deadlock
2
Transaction
• Nhắc lại kiến thức seminar lần 1
– Transaction là gì ?
– Cách khai báo một transaction như thế nào?
3
Transaction
Transaction là tập hợp các thao
tác có thứ tự truy xuất dữ liệu
trên CSDL thành 1 đơn vị công việc
logic (xem là 1 thao tác nguyên
tố), chuyển CSDL từ trạng thái nhất
quán này sang trạng thái nhất quán
khác
Rollback: Kết thúc giao tác thất bại
Khai báo giao tác
Commit: Kết thúc giao tác thành công
Begin tran: bắt đầu giao tác
Khi nào thì rollback
Dữ liệu sẽ


Được xác
Nhận trên
CSDL
Khi có một lệnh nào đó
trong giao tác bị lỗi và
cần phải khôi phục lại
dữ liệu
4
Transaction (tt)
• Lưu ý:
- Rollback không có tác dụng return
- Nếu có khai báo giao tác mà không có kết thúc giao tác giao tác vẫn còn thực
hiện khi store procedure kết thúc.
- Phải luôn đảm bảo lúc runtime một trong 2 cặp [begin tran - commit] hoặc
[begin tran - rollback] được thực thi
BEGIN TRAN
COMMIT TRAN
// Statement 1…….
// Statement 2…….
// …………………
Begin Tran
……………
IF @@error != 0
BEGIN
Các câu lệnh xử lý khi bị lỗi
Rollback Tran
return
END
Commit
5

Tranh chấp đồng thời
1. Tranh chấp đồng thời là gì ?
• Các tình huống có thể xảy ra tranh chấp
• Một số lỗi khi truy xuất đồng thời:
 Đọc phải dữ liệu rác
 Không đọc lại được dữ liệu
 Bóng ma
 Mất dữ liệu cập nhật
• Giả lập truy xuất đồng thời
2. Xử lý tranh chấp đồng thời:
• Dùng mức cô lập
• Khai báo khóa trên từng dòng lệnh
6
Khi nhiều giao tác cùng thực hiện truy xuất trên một đơn vị dữ liệu tại
một thời điểm để thực hiện các thao tác đọc, ghi lên đơn vị dữ liệu đó
đụng độ => tranh chấp đồng thời.
7
Tranh chấp đồng thời (tt)
Giao tác 1
Giao tác 2
Nhận xt
Đọc
Đọc
Không xảy ra tranh chấp
Đọc
Ghi
Có tranh chấp xảy ra
Ghi
Đọc
Có tranh chấp xảy ra

Ghi
Ghi
Cùng lúc ch có 1 giao tác được ghi
trên 1 đơn vị dữ liệu
Như vậy khi có 2 transaction (của 2 connection khác nhau) có ít nhất
1 thao tác ghi trên cùng một đơn vị dữ liệu sẽ xảy ra tình trạng tranh
chấp. Nếu để tình trạng tranh chấp này xảy ra sẽ dẫn đến những sai
sót trên CSDL
Các tình huống xảy ra tranh chấp đồng thời
8
Giải quyết
• Giải quyết tranh chấp bằng cách sử dụng các
phương thức khoá.
• Đơn vị dữ liệu có thể được chia thành nhiều cấp độ sau:
•  Một dòng dữ liệu.
•  Một trang (page) (8KB)
•  Một bảng (table) trong cơ sở dữ liệu.
•  Một cơ sở dữ liệu (database).
9
Một số lỗi khi truy xuất đồng thời
Dirty read
Unrepeatable
read
Phantom
Lost
update
4. Mất dữ liệu
cập nhật
1. Đọc dữ liệu rác
2. Không thể

đọc lại dữ liệu
3. Bóng ma
10
Dirty read (đọc dữ liệu rác)
T1
T2
BEGIN TRAN
Write(A)
Waitfor delay ‘00:00:05’
IF(lỗi)
ROLLBACK
COMMIT
BEGIN TRAN
Read(A)
COMMIT
T2 đã đọc dữ liệu được ghi bởi T1, nhưng sau đó T1 lại huỷ việc ghi
11
Unrepeatable read
Hai lần đọc A của T1 cho kết quả khác nhau (trong cùng 1 giao tác)
12
Phantom
Hai lần đọc A của T1 cho kết quả khác nhau (trong cùng 1 giao tác)
13
Lost update
Giao tác T2 thực hiện ghi đè lên dữ liệu được ghi bởi giao tác T1
14
Xử lý tranh chấp đồng thời
2. Sử dụng mức cô lập
Mức cô lập là những cấu hình được thiết lập
trong các giao tác quy định việc xin khóa/giữ

khóa của những thao tác đọc/ghi lên đvdl
1. Một số quy tắc đọc / ghi trên CSDL
HQTCSDL xử lý tranh chấp đồng thời ở mức cơ
bản là nhờ những quy tắc đọc/ghi trên dvdl nhờ
sự hỗ trợ của việc cấp phát và thu hồi khóa
3. Khóa trực tiếp từ dòng lệnh
15
1.Các quy tắc đọc/ghi trên CSDL
1. Khi giao tác T thực hiện việc đọc đơn vị dữ liệu (đvdl) A  T thường xin khóa
đọc trên A. Nếu hệ thống cấp phát khóa đọc cho T thì T được phép đọc đvdl A
2. Khi giao tác T thực hiện việc ghi lên đvdl A  T bắt buộc phải xin khóa ghi trên
A. Nếu hệ thống cấp phát khóa ghi cho T thì T được phép ghi lên dvdl A.
3. Tại một thời điểm, ch có tối đa 1 giao tác giữ khóa ghi trên 1 đvdl.
4. Tại một thời điểm, có thể có nhiều giao tác cùng giữ khóa đọc trên đvdl
5. Nếu một giao tác T đang giữ khóa ghi trên A thì đến hết giao tác
(rollback/commit) thì T mới trả khóa ghi.
6. Khi một giao tác T đang giữ khóa ghi trên A  thì các giao tác khác muốn xin
khóa đọc trên A thì giao tác đó phải chờ.
7. Khi một giao tác T đang giữ khóa đọc trên A  thì các giao tác khác muốn xin
khóa ghi trên A thì giao tác đó phải chờ.
16
Bảng tương thích giữa các loại khoá
Cho phép (tương thích)
Không cho phép (không tương thích)
17
Xử lý tranh chấp đồng thời
2. Sử dụng mức cô lập
Mức cô lập là những cấu hình được thiết lập
trong các giao tác quy định việc xin khóa/giữ
khóa của những thao tác đọc/ghi lên đvdl

1. Một số quy tắc đọc / ghi trên CSDL
HQTCSDL xử lý tranh chấp đồng thời ở mức cơ
bản là nhờ những quy tắc đọc/ghi trên dvdl nhờ
sự hỗ trợ của việc cấp phát và thu hồi khóa
3. Khóa trực tiếp từ dòng lệnh
18
2. Sử dụng mức cô lập
Read
Uncommitted
Read
Committed
Serializable
BEGIN TRAN
SET TRAN ISOLATION LEVEL Tên_mức_cô_lập

Các lệnh của giao tác

COMMIT
Repeatable
Read
Tất cả các lệnh đọc ghi
trong giao tác đều chịu ảnh
hưởng của mức cô lập
Mức cô lập
mặc định
19
1. Read Uncommitted
• Đặc điểm:
– Đọc không cần xin khóa
– Khi dùng mức cô lập này có khả năng bị các

lỗi:
Đọc dữ liệu rác
Không đọc lại được dữ liệu
Bóng ma
Mất dữ liệu cập nhật.
Không giải quyết bất kỳ lỗi tranh chấp nào
20
2. Read Committed
• Đặc điểm:
– Đọc phải xin khóa
– Khóa đọc xong trả liền
– Khi dùng mức cô lập này có khả năng bị
các lỗi:
Không đọc lại được dữ liệu
Bóng ma
Mất dữ liệu cập nhật.
giải quyết được lỗi Dirty read - đọc dữ liệu rác
21
Repeatable Read
• Đặc điểm:
– Đọc phải xin khóa
– Khóa đọc được giữ đến hết giao tác
– Khi dùng mức cô lập này có khả năng bị
các lỗi:
Bóng ma
Mất dữ liệu cập nhật.
giải quyết được lỗi đọc phải dữ liệu rác và
lỗi không đọc lại được dữ liệu
22
Serializable

• Đặc điểm:
– Đọc phải xin khóa
– Khóa đọc được giữ đến hết giao tác
– Không cho insert những dòng dữ liệu thỏa điều kiện
thiết lập share-lock
– Khi dùng mức cô lập này có khả năng bị
các lỗi:
Mất dữ liệu cập nhật.
•  giải quyết được lỗi dirty read và lỗi
unrepeatable read và phantom.
23
• Minh hoạ tình huống
• Demo tình huống
•Tránh deadlock
Dead-lock
Circle
deadlock
• Minh hoạ tình huống
• Demo tình huống
•Tránh deadlock
Conversion
deadlock
Trong truy xuất đồng thời, deadlock là một trạng thái trong đó các
giao tác chờ nhau về mặt tài nguyên làm cho hệ thống đứng yên
25
Cycle deadlock
Transaction 1 Transaction 2
Bảng 1 Bảng 2
Bảng 2 Bảng 1
Deadlock

Giữ X-lock
trên bảng 1
Giữ X-lock
trên bảng 2
Giữ X-lock
trên bảng1
Giữ X-lock
trên bảng 2
26

×