Bài giảng Các hệ quản trị cơ sở dữ liệu - Chương 2: Giao dịch (Transaction) - Đỗ Ngọc Như Loan

Giới thiệu về Giao dịch (Transaction).

 Các tính chất của giao dịch.

 Các thành phần xử lý giao dịch trong HQT CSDL.

 Các trạng thái của giao dịch.

 Lịch trình:

 Khái niệm

 Lịch trình tuần tự

 Tính khả tuần tự

 Khả tuần tự xung đột

 Một số bài tập

 Khả tuần tự view

 Giao dịch trong SQL

pdf88 trang | Chia sẻ: Thục Anh | Ngày: 12/05/2022 | Lượt xem: 461 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Các hệ quản trị cơ sở dữ liệu - Chương 2: Giao dịch (Transaction) - Đỗ Ngọc Như Loan, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Tj thực hiện Read(X).  Ti thực hiện Read(X) sau đó Tj thực hiện Write(X).  Ti thực hiện Write(X) sau đó Tj thực hiện Write(X).  Lịch trình S là khả tuần tự xung đột nếu G không có chu trình.  Chu trình? 60 S G U - K h o a C N T T - N T U N - H Q T C S D L VÍ DỤ 61 S G U - K h o a C N T T - N T U N - H Q T C S D L TIME TIME TIME LỊCH TRÌNH A LỊCH TRÌNH B LỊCH TRÌNH C LỊCH TRÌNH D VÍ DỤ 62 S G U - K h o a C N T T - N T U N - H Q T C S D L THỨ TỰ KHẢ TUẦN TỰ  Thứ tự trong lịch trình tuần tự S’ tương đương S có thể có được thông qua sắp xếp Topo (Topological sorting). 63 S G U - K h o a C N T T - N T U N - H Q T C S D L ỨNG DỤNG CỦA KHẢ TUẦN TỰ  Lịch trình khả tuần tự cho phép xử lý giao dịch đồng thời mà vẫn đảm bảo tính chính xác  Tuy nhiên, trên thực tế, khó kiểm tra tính khả tuần tự của lịch trình:  Nếu giao dịch được thực hiện sau đó kết quả của lịch trình được kiểm tra tính khả tuần tự, khi đó ta phải hủy bỏ lịch trình nếu nó không thỏa Không thực tế.  Khi giao dịch được gửi liên tục, rất khó kiểm soát khi nào lịch trình bắt đầu và kết thúc.  Hệ QTCSDL cung cấp các giao thức (protocols) để đảm bảo tính khả tuần tự của các lịch trình khi thực hiện. 64 S G U - K h o a C N T T - N T U N - H Q T C S D L VÍ DỤ  Lịch trình có khả tuần tự xung đột hay không? 65 S G U - K h o a C N T T - N T U N - H Q T C S D L VÍ DỤ  Lịch trình có khả tuần tự xung đột hay không? 66 S G U - K h o a C N T T - N T U N - H Q T C S D L BÀI TẬP 67 S G U - K h o a C N T T - N T U N - H Q T C S D L LỊCH TRÌNH E BÀI TẬP 68 S G U - K h o a C N T T - N T U N - H Q T C S D L LỊCH TRÌNH F BÀI TẬP  Lịch biểu nào dưới đây là khả tuần tự? 69 S G U - K h o a C N T T - N T U N - H Q T C S D L BÀI TẬP  Cho đồ thị trình tự của của lịch trình S:  Lịch trình nào tương đương với S: 70 S G U - K h o a C N T T - N T U N - H Q T C S D L BÀI TẬP Lịch trình nào sau đây là khả tuần tự xung đột và tìm một lịch trình tuần tự tương đương với nó (nếu có): 71 S G U - K h o a C N T T - N T U N - H Q T C S D L TƯƠNG ĐƯƠNG VIEW  2 lịch trình S và S’ được gọi là tương đương view (view equivalent) nếu thỏa:  Có cùng tập hợp các giao dịch.  Với mỗi dữ liệu X, nếu Ti thực hiện Read(X) trong S và giá trị X được sinh ra bởi giao dịch Tj thì Ti cũng phải đọc giá trị X được sinh ra bởi Tj trong S’.  Với mỗi dữ liệu X, giao dịch thực hiện Write(X) sau cùng trong S cũng phải thực hiện Write(X) cuối cùng trong S’. 72 S G U - K h o a C N T T - N T U N - H Q T C S D L TƯƠNG ĐƯƠNG VIEW  Các điều kiện đảm bảo:  Mỗi giao dịch đọc cùng một giá trị trong cả 2 lịch trình.  Cả 2 lịch trình cho ra kết quả trạng thái hệ thống như nhau.  Ngoài ra còn 1 số loại tương đương khác do các ứng dụng khác nhau đưa ra. 73 S G U - K h o a C N T T - N T U N - H Q T C S D L KHẢ TUẦN TỰ VIEW  Khả tuần tự view (view serializable): 1 lịch trình gọi là khả tuần tự view nếu nó tương đương view với 1 lịch trình tuần tự. 74 S G U - K h o a C N T T - N T U N - H Q T C S D L T1 T2 Read(Q) Write(Q) Write(Q) Lịch trình S T3 Write(Q) KHẢ TUẦN TỰ VIEW  Lịch trình khả tuần tự xung đột là khả tuần tự view.  Lịch trình khả tuần tự view có thể không khả tuần tự xung đột Do các write mù (blind write).  Write mù: thực hiện hoạt động write mà không thực hiện read. VD: Sg: R1(X); W2(X); W1(X); W3(X); 75 S G U - K h o a C N T T - N T U N - H Q T C S D L GIAO DỊCH TRONG SQL  Chuẩn SQL đặc tả sự bắt đầu của giao dịch một cách không tường minh.  Giao dịch được kết thúc bởi một trong 2 lệnh:  Commit tran  Rollback tran  Cho phép định nghĩa giao dịch được thực hiện không khả tuần tự. 76 S G U - K h o a C N T T - N T U N - H Q T C S D L CÚ PHÁP SQL  BEGIN TRANSACTION: Bắt đầu một transaction  SAVE TRANSACTION: Đánh dấu vị trí trong transaction(điểm đánh dấu)  ROLLBACK TRANSACTION: Quay lui lại đầu transaction hoặc điểm đánh dấu trước đó trong transaction.  COMMIT TRANSACTION: Đánh dấu điểm kết thúc của một transaction, khi câu lệnh này thực thi có nghĩa là transaction thực hiện thành công.  ROLLBACK WORK: Quay lui lại đầu transaction.  COMMIT WORK: Đánh dấu kết thúc transaction. 77 S G U - K h o a C N T T - N T U N - H Q T C S D L CÚ PHÁP SQL BEGIN { TRAN | TRANSACTION } { transaction_name | @tran_name_variable } VD: BEGIN TRAN T1 SELECT * FROM NHANVIEN COMMIT TRAN T1 78 S G U - K h o a C N T T - N T U N - H Q T C S D L CÁC DẠNG READ TRONG SQL  Dirty read: Giao dịch T1 được phép đọc những thay đổi của T2 chưa được committed. Nếu T2 bị hủy bỏ, giá trị đọc được của T1 không tồn tại và không chính xác.  Non-repeatable read: Giao dịch T1 đọc 1 giá trị từ bảng, nếu có giao dịch T2 thay đổi giá trị đó và T1 đọc lại, T1 sẽ thấy giá trị được cập nhật. 79 S G U - K h o a C N T T - N T U N - H Q T C S D L CÁC DẠNG READ TRONG SQL  Phantoms: Giao dịch T1 đọc 1 số dòng trong bảng dựa trên 1 số điều kiện Where nào đó. Khi đó 1 giao dịch T2 khác thêm 1 dòng mới thỏa mãn điều kiện Where của T1 vào bảng đó. Nếu T1 đọc lại giá trị của bảng sẽ thấy 1 bóng ma (phantom) – 1 dòng mới được thêm vào, trước đó chưa xuất hiện. 80 S G U - K h o a C N T T - N T U N - H Q T C S D L CÁC MỨC NHẤT QUÁN TRONG SQL  Serializable: với nghĩa không cho phép:  Dirty read  Non-repeatable read  Phantoms  Repeatable read: cho phép Phantoms  Read committed: mặc định, chỉ không cho phép Dirty read.  Read uncommitted: cho phép tất cả. Lệnh xem thông tin về thiết lập hiện tại trên SQL: DBCC USEROPTIONS 81 S G U - K h o a C N T T - N T U N - H Q T C S D L CÁC MỨC NHẤT QUÁN TRONG SQL Isolation level Dirty Reads Non-repeatable reads Phantom reads READ UNCOMMITTED Yes Yes Yes READ COMMITTED No Yes Yes REPEATABLE READ No No Yes SERIALIZABLE No No No 82 S G U - K h o a C N T T - N T U N - H Q T C S D L READ UNCOMMITED  Cho phép đọc cả dữ liệu đang trong xử lý ở một giao tác chưa hoàn tất khác (uncommited)  Đây là mức thấp nhất, cho phép cả 3 kiểu đọc dữ liệu.  Cú pháp SQL: SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 83 S G U - K h o a C N T T - N T U N - H Q T C S D L READ UNCOMMITED S G U - K h o a C N T T - N T U N - H Q T C S D L 84 BEGIN TRAN T1 INSERT INTO NHANVIEN VALUES ('NV10','A','B','C','1999-1- 22','SU VAN HANH','NAM',88888,'P1') WAITFOR DELAY '00:00:10' ROLLBACK TRAN T1 BEGIN TRAN T2 SELECT * FROM NHANVIEN COMMIT TRAN T2 READ COMMITED  Mặc định của SQL Server.  Chỉ đọc các dữ liệu đã xử lý hoàn tất (commited)  Do cơ chế lock của SQL Server.  Cú pháp SQL: SET TRANSACTION ISOLATION LEVEL READ COMMITTED 85 S G U - K h o a C N T T - N T U N - H Q T C S D L REPEATABLE READ  Tình huống trong khi đang truy xuất dữ liệu lại có sự cập nhật dữ liệu đó ở một giao tác khác dẫn đến sự không nhất quán về dữ liệu.  Do đó cần đến REPEATABLE READ  Cú pháp: SET TRANSACTION ISOLATION LEVEL REPEATABLE READ 86 S G U - K h o a C N T T - N T U N - H Q T C S D L REPEATABLE READ S G U - K h o a C N T T - N T U N - H Q T C S D L 87 BEGIN TRAN REPEATREAD SELECT * FROM NHANVIEN WAITFOR DELAY '00:00:05' SELECT * FROM NHANVIEN COMMIT TRAN REPEATREAD BEGIN TRAN SHORTUPDATE UPDATE NHANVIEN SET HONV='A' WHERE MANV='NV10' COMMIT TRAN SHORTUPDATE HẾT! Tham khảo: Chương 21 Fundamentals of Database Systems

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_cac_he_quan_tri_co_so_du_lieu_chuong_2_giao_dich_t.pdf