intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Lê Trinh | Ngày: | Loại File: PDF | Số trang:31

157
lượt xem
14
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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 Dữ liệu sẽ Được xác Nhận trên CSDL.

Chủ đề:
Lưu

Nội dung Text: Hệ quản trị CSDL Tranh chấp đồng thời

  1. Hệ quản trị CSDL Tranh chấp đồng thời Trình bày: Hồ Thị Hoàng Vy 1
  2. Nội dung Trình bày các tình huống tranh chấp và cách xử lý Transaction Tranh chấp đồng thời Xử lý tranh chấp đồng thời Deadlock Tránh deadlock 2
  3. 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
  4. 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 Dữ liệu sẽ Được xác Nhận trên Khai báo giao tác CSDL Begin tran: bắt đầu giao tác Commit: Kết thúc giao tác thành công Rollback: Kết thúc giao tác thất bại 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 Khi nào thì rollback dữ liệu 4
  5. Transaction (tt) BEGIN TRAN Begin Tran …………… // Statement 1……. IF @@error != 0 // Statement 2……. BEGIN -- Các câu lệnh xử lý khi bị lỗi // ………………… Rollback Tran COMMIT TRAN return END Commit • 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 5
  6. 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
  7. 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
  8. Tranh chấp đồng thời (tt) Các tình huống xảy ra tranh chấp đồng thời 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 8
  9. 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
  10. Một số lỗi khi truy xuất đồng thời 1. Đọc dữ liệu rác Dirty read Unrepeatable Lost 4. Mất dữ liệu read update cập nhật 2. Không thể đọc lại dữ liệu 3. Bóng ma Phantom 10
  11. Dirty read (đọc dữ liệu rác) T1 T2 BEGIN TRAN BEGIN TRAN Write(A) Waitfor delay ‘00:00:05’ Read(A) IF(lỗi) ROLLBACK COMMIT COMMIT T2 đã đọc dữ liệu được ghi bởi T1, nhưng sau đó T1 lại huỷ việc ghi 11
  12. 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
  13. Phantom Hai lần đọc A của T1 cho kết quả khác nhau (trong cùng 1 giao tác) 13
  14. 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
  15. Xử lý tranh chấp đồng thời 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 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 3. Khóa trực tiếp từ dòng lệnh 15
  16. 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
  17. 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
  18. Xử lý tranh chấp đồng thời 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 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 3. Khóa trực tiếp từ dòng lệnh 18
  19. 2. Sử dụng mức cô lập Read Read Repeatable Serializable Uncommitted Committed Read Mức cô lập mặc định BEGIN TRAN SET TRAN ISOLATION LEVEL Tên_mức_cô_lập -- -- Các lệnh của giao tác Tất cả các lệnh đọc ghi -- trong giao tác đều chịu ảnh COMMIT hưởng của mức cô lập 19
  20. 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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2