Professional Documents
Culture Documents
Mục tiêu
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 2
Tài liệu tham khảo
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 3
Nội dung
1. Giao tác
1.1 Giới thiệu
1.2 Phân loại
1.3 Các cấp độ cô lập (Isolation level)
2. Khóa chốt
2.1 Giới thiệu
2.2 Theo dõi hoạt động khóa chốt
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 4
1.1 Giới thiệu
Buffer
3 Các
Các lệnh được ghi
lệnh được ghi vào
vào log
log file
file
Cache
Disk
Các
Các trang
trang dữ
dữ liệu
liệu
được
được đọc đọc (nếu
(nếu chưa
chưa Disk
2 có
có trên
trên Buffer
Buffer Cache).
Cache).
Dữ
Dữ liệu
liệu thay đổi trên
thay đổi trên
Buffer Khi
Khi checkpoint
checkpoint xảy
xảy ra
ra thì
thì các
các giao
giao
Buffer Cache
Cache 4 tác đã hoàn
tác đã hoàn tất
tất sẽ được ghi
sẽ được ghi vào
vào
CSDL
CSDL
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 5
11 None
22 Roll forward
33 Roll back
44 Roll forward
55 Roll back
1. Giao tác
1.1 Giới thiệu
1.2 Phân loại
1.3 Các cấp độ cô lập (Isolation level)
2. Khóa chốt
2.1 Giới thiệu
2.2 Theo dõi hoạt động khóa chốt
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 7
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 8
Autocommit Transaction
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 9
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 10
Explicit Transaction
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 11
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 12
Implicit Transaction
Nội dung
1. Giao tác
1.1 Giới thiệu
1.2 Phân loại
1.3 Các cấp độ cô lập (Isolation level)
2. Khóa chốt
2.1 Giới thiệu
2.2 Theo dõi hoạt động khóa chốt
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 14
1.3 Các cấp độ cô lập
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 15
oPessimistic
oOptimistic
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 16
Concurrency control là gì?
● Pessimistic concurrency
oKhi giao tác T1 bắt đầu cập nhật dữ liệu thì hệ thống sẽ
khóa ngay dữ liệu này
oMột giao tác T2 muốn đọc dữ liệu thì sẽ phải chờ cho
đến khi T1 kết thúc
oSử dụng pessimistic concurrency khi dữ liệu có sự tranh
chấp cao
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 17
● Optimistic concurrency
oKhông khóa dữ liệu khi các giao tác bắt đầu cập nhật
oKhi một giao tác kết thúc và ghi nhận các thay đổi thì
nếu như dữ liệu đã bị thay đổi trước đó (bởi một giao tác
khác) sẽ xảy ra lỗi và kết thúc mà không ghi nhận (First
in Win)
oSử dụng pessimistic concurrency khi dữ liệu có sự tranh
chấp thấp
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 18
Các lỗi tương tranh nào sẽ được giải quyết?
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 19
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 20
1a. Minh họa gặp lỗi dirty read
Giả
Giả sử
sử tổng
tổng số
số vé
vé đặt
đặt của
của chuyến
chuyến bay
bay 1
1 là
là 0
0
T1 T2
Cập nhật chuyến bay 1: Đọc tổng số vé đặt của
đặt 5 vé chuyến bay 1
Đọc thấy 5
Cập nhật chuyến bay 1:
đặt thêm 3 vé
Đọc thấy 8
Kết thúc ROLLBACK TRAN
Đọc thấy 0
Kết thúc
COMMIT/ROLLBACK TRAN
thời gian
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 21
SET
SET TRANSACTION
TRANSACTION ISOLATION
ISOLATION LEVEL
LEVEL READ
READ COMMITTED
COMMITTED
T1 T2
Cập nhật chuyến bay 1: Đọc tổng số vé đặt của
đặt 5 vé chuyến bay 1
Xảy ra dead lock
Cập nhật chuyến bay 1:
đặt thêm 3 vé
Kết thúc
COMMIT/ROLLBACK TRAN
Đọc được
Kết thúc
thời gian COMMIT/ROLLBACK TRAN
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 22
Các lỗi tương tranh nào sẽ được giải quyết?
Giả
Giả sử
sử tổng
tổng số
số vé
vé đặt
đặt của
của chuyến
chuyến bay
bay 1
1 là
là 0,
0, tổng
tổng số
số ghế
ghế là
là 100
100
T1 T2
Muốn đặt 10 vé cho chuyến bay 1:
Kiểm tra chuyến bay còn đủ ghế ? Muốn đặt 20 vé cho chuyến bay 1:
Kiểm tra thông tin khách hàng? Kiểm tra chuyến bay còn đủ ghế ?
Nếu tất cả hợp lệ thì cho phép đặt Kiểm tra thông tin khách hàng?
Kết thúc COMMIT TRAN Nếu tất cả hợp lệ thì cho phép đặt
Tổng số vé đặt = 10 Kết thúc COMMIT TRAN
Tổng số vé đặt = 20
thời gian
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 24
2b. Minh họa gặp lỗi non repeatable read
Giả
Giả sử
sử tổng
tổng số
số vé
vé đặt
đặt của
của chuyến
chuyến bay
bay 1
1 là
là 0,
0, tổng
tổng số
số ghế
ghế là
là 100
100
T1 T2
Muốn đặt 10 vé cho chuyến bay 1:
Kiểm tra chuyến bay còn đủ ghế ? Đọc thấy 0
Kiểm tra thông tin khách hàng? …
Nếu tất cả hợp lệ thì cho phép đặt …
Kết thúc COMMIT TRAN …
Đọc thấy 10
Kết thúc COMMIT/ROLLBACK TRAN
thời gian
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 25
SET
SET TRANSACTION
TRANSACTION ISOLATION
ISOLATION LEVEL
LEVEL REPEATABLE
REPEATABLE READ
READ
T1 T2
Đọc tổng số vé đặt của chuyến bay 1,
kết quả là 0
Cập nhật chuyến bay 1: đặt 5 vé
Xảy ra dead lock
Đọc tổng số vé đặt của chuyến bay 1,
kết quả vẫn là 0
Kết thúc COMMIT/ROLLBACK TRAN
Kết thúc COMMIT/ROLLBACK TRAN
thời gian
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 26
Các lỗi tương tranh nào sẽ được giải quyết?
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 27
Giả
Giả sử
sử các
các chuyến
chuyến bay
bay khởi
khởi hành
hành từ
từ Sài
Sài gòn
gòn là
là 3
3
T1 T2
Đếm các chuyến bay có
TpDi=‘SG’
Kết quả là 3
Thêm một chuyến bay có
TpDi=‘SG’
Kết thúc COMMIT TRAN
Đếm các chuyến bay có
Tpdi=‘SG’
Kết quả là 4
Kết thúc
COMMIT/ROLLBACK TRAN
thời gian
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 28
3b. Giải quyết lỗi phantom read
SET
SET TRANSACTION
TRANSACTION ISOLATION
ISOLATION LEVEL
LEVEL SERIALIZABLE
SERIALIZABLE
T1 T2
Đếm các chuyến bay có
TpDi=‘SG’
Kết quả là 3
Thêm một chuyến bay có
TpDi=‘SG’
Xảy ra dead lock
Đếm các chuyến bay có
Tpdi=‘SG’
Kết quả vẫn là 3
Kết thúc Kết thúc
COMMIT/ROLLBACK TRAN COMMIT/ROLLBACK TRAN
thời gian
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 29
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 30
Hai cấp độ cô lập mới trong SQL Server 2005
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 31
ALTER
ALTER DATABASE
DATABASE QLBanVe
QLBanVe SET
SET READ_COMMITTED_SNAPSHOT
READ_COMMITTED_SNAPSHOT ON
ON
SET
SET TRANSACTION
TRANSACTION ISOLATION
ISOLATION LEVEL
LEVEL READ
READ COMMITTED
COMMITTED
Giả
Giả sử
sử tổng
tổng số
số vé
vé đặt
đặt của
của chuyến
chuyến bay
bay 1
1 là
là 0
0
T1 T2
Cập nhật chuyến bay 1: đặt 5 vé Đọc tổng số vé đặt của chuyến bay 1
Đọc thấy 0 (dữ liệu gốc)
Cập nhật chuyến bay 1: đặt thêm 3 vé
Kết thúc COMMIT TRAN
Đọc thấy 8 (dữ liệu đã cập nhật)
Kết thúc COMMIT/ROLLBACK TRAN
thời gian
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 32
Giải quyết lỗi phantom read bằng snapshot
ALTER
ALTER DATABASE
DATABASE QLBanVe
QLBanVe SET
SET ALLOW_SNAPSHOT_ISOLATION
ALLOW_SNAPSHOT_ISOLATION ON
ON
SET
SET TRANSACTION
TRANSACTION ISOLATION
ISOLATION LEVEL
LEVEL SNAPSHOT
SNAPSHOT
Giả
Giả sử
sử các
các chuyến
chuyến bay
bay khởi
khởi hành
hành từ
từ Sài
Sài gòn
gòn là
là 3
3
T1 T2
Đếm các chuyến bay có TpDi=‘SG’
Kết quả là 3
Thêm một chuyến bay có TpDi=‘SG’
Đếm các chuyến bay có Tpdi=‘SG’
Kết quả vẫn là 3
Kết thúc COMMIT TRAN
Đếm các chuyến bay có Tpdi=‘SG’
Kết quả vẫn là 3
thời gian
Kết thúc COMMIT/ROLLBACK TRAN
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 33
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 34