Tài liệu Hệ quản trị cơ sở dữ liệu - Xử lý tranh chấp đồng thời - Tiết Gia Hồng

Kỹ thuật khóa
 Mức cô lập : là các thiết lập trong giao tác quy định
việc xin khóa/giữ khóa của những thao tác đọc/ghi lên
đơn vị dữ liệu.
 Khóa trực tiếp trong từng câu lệnh 
pdf 27 trang xuanthi 30/12/2022 1880
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu Hệ quản trị cơ sở dữ liệu - Xử lý tranh chấp đồng thời - Tiết Gia Hồng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdftai_lieu_he_quan_tri_co_so_du_lieu_xu_ly_tranh_chap_dong_tho.pdf

Nội dung text: Tài liệu Hệ quản trị cơ sở dữ liệu - Xử lý tranh chấp đồng thời - Tiết Gia Hồng

  1.  Xử lí tranh chấp đồng thời  Deadlock  Xử lý deadlock 2
  2. Read Uncommitted Đọc dữ liệu khi chưa commit Read Committed Chỉ đọc dữ liệu đã commit (Default) Repeatable Read Cho phép đọc lại dữ liệu Serializable Cho phép đọc tuần tự 4
  3. Update TAIKHOAN(‘TK01’, 300) T2 : Xin cấp X-lock trên bảng TAIKHOAN SQL : Cấp X-lock trên bảng TAIKHOAN Set Read Uncommitted Select (TAIKHOAN) T1: Không xin khóa Commit Commit 6
  4.  Read Committed . Đặc điểm: Phát S khi đọc và trả khóa ngay khi đọc xong. . 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 : Giải quyết được Dirty Read 8
  5. Mức cô lập được gán trên giao tác T2 (giao tác đọc dữ liệu) CREATE PROC USP_VANTINTK @MATK CHAR(10) AS BEGIN TRAN SET TRAN ISOLATION LEVEL READ COMMITTED DECLARE @SODU FLOAT = 0 SELECT * FROM TAIKHOAN WHERE MATK = @MATK COMMIT TRAN 10
  6. Set Repeatable Read Select (TAIKHOAN) T1 : Xin khóa S SQL : Cấp khóa S T1 : giữ khóa S đến hết giao tác T1 Update (TAIKHOAN) T2: Xin khóa X SQL : Không cấp khóa X do T1 đang giữa khóa S Commit Commit 12
  7.  Serializable . Giống Repeatable Read, có ngăn chặn lệnh insert dữ liệu thoả điều kiện thiết lập S. Giải quyết được Dirty Read,Unrepeatable Read và Phantom 14
  8. Mức cô lập được gán trên giao tác T1 (giao tác đọc dữ liệu) CREATE PROC USP_DANGNHAP @MAKH CHAR(10), @MATKHAU CHAR(10) AS BEGIN TRAN SET TRAN ISOLATION LEVEL SERIALIZABLE IF EXISTS (SELECT * FROM KHACHHANG WHERE MAKH = @MAKH AND MATKHAU = @MATKHAU) SELECT * FROM KHACHHANG WHERE MAKH = @MAKH AND MATKHAU = @MATKHAU COMMIT TRAN 16
  9. STT Khóa Ý nghĩa 1 ReadUncommitted Không thiết lập shared lock khi đọc / Nolock (tương tự như mức cô lập Read Uncommitted) 2 ReadCommitted -Đây là chế độ mặc định (tương tự readcommitted) -Chỉ đọc những dữ liệu đã commit -Thiết lập shared lock trên đơn vị dữ liệu đọc và mở clock ngay khi đọc xong. 3 RepeatableRead Thiết lập shared lock khi đọc và giữ shared lock đến hết giao tác 18
  10. STT Khóa Ý nghĩa 8 RowLock Chỉ đặt khóa trên dòng cần thao tác 9 TabLock -Khóa toàn bộ dòng trên bảng đang thao tác bằng khóa S. -Các thao tác (Insert / Update / Delete) không thể thực hiện trên bảng này. 10 TabLockX Xlock + TabLock  1, 2, 3, 5, 6, 7 chỉ có ý nghĩa khi dùng trong câu select.  1, 2, 3, 5, 6, 7 có thể kết hợp với 4 (khóa theo kiểu key-range) và 8, 9 (chỉ ra đơn vị cần khóa) 20
  11.  Conversion deadlock  Cycle deadlock 22
  12. T1 chờ T2 trả khóa đọc trên A, và T2 chờ T1 trả khóa đọc trên A => Hệ thống bị treo 24
  13. T1 chờ T2 trả khóa ghi trên B, và T2 chờ T1 trả khóa ghi trên A Hệ thống bị treo 26