Bài giảng Cơ sở dữ liệu: Quản lý giao dịch cung cấp cho người học các kiến thức: Khái niệm giao dịch, 4 tính chất của giao dịch, các loại giao dịch, giao dịch tường minh, giao dịch không tường minh, giao dịch tự động. Mời các bạn cùng tham khảo nội dung chi tiết.
QuẢN LÝ GIAO DỊCH GIAO DỊCH KHÁI NIỆM Giao dịch: đơn vị thực chương trình truy xuất vào liệu làm thay đổi nội dung nhiều hạng mục liệu Là tập lệnh thực khối lệnh, thành cơng hồn tồn thất bại hồn tồn TÍNH CHẤT CỦA GIAO DỊCH Atomic (ngun tử): đảm bảo toàn hoạt động giao dịch thành cơng thất bại Consistency (tính qn): transaction hoàn thành, liệu phải trạng thái toàn vẹn Isolation (cơ lập): có nhiều giao dịch thực đồng thời phải đảm bảo chúng giữ độc lập để kết không ảnh hưởng lẫn Durability (bền vững): sau giao dịch thực hiện, có cố tất liệu thay đối giao dịch hồi phục lại theo yêu cầu giao dịch VÍ DỤ Một nhà băng gồm tài khoản Một giao dịch T chuyển 50 từ tài khoản A sang tài khoản B Giả sử tài khoản A B tương ứng 1000 2000 Giao dịch viết sau: READ(A) A=A-50 WRITE(A) READ(B) B=B+50 WRITE(B) Ví dụ Tính Atomic: Nếu giao dịch thành cơng tất lệnh giao dịch thành công A=950, B=2050 Giao dịch thực đến lệnh READ(B) mà hệ thống xảy cố toàn giao dịch bị hủy: toàn câu lệnh giao dịch không thực thành cơng => A=1000 B=2000 VÍ dụ Tính Consistency: Sau transaction hoàn thành, liệu phải trạng thái quán: tài khoản A phải có số tiền 950 B có 2050 Ví dụ Durability: sau giao dịch thực thành công, giả sử có cố liệu sau khơi phục phải đảm bảo A có 950 B có 2050 Isolation: Nếu giao dịch chuyển tiền thực đến câu lệnh READ(A) có giao dịch khác thực việc chuyển 1000 từ A sang C Khi hai giao dịch tương tranh với Tại cần phải quản lý giao dịch? Giả sử có transaction truy xuất đồng thời đơn vị liệu T1 T2 Nhận xét Đọc Đọc Khơng có tranh chấp Đọc Ghi Xảy tranh chấp Ghi Đọc Xảy tranh chấp Ghi Ghi Xảy tranh chấp Để giải tranh chấp => phải quản lý giao dịch (sử dụng mức lập khóa) để có tranh chấp xảy xác định xem transaction ưu tiên, transaction phải chờ Tại cần phải có mức lập/khóa Để hạn chế quyền truy cập môi trường đa người dùng Để đảm bảo tính tồn vẹn CSDL: liệu bên CSDL bị sai logic, query chạy đưa kết không mong đợi Khi giao dịch muốn truy cập riêng vào bảng, server khóa/cơ lập bảng lại cho riêng giao dịch GIAO DỊCH TƯỜNG MINH (EXPLICIT TRANSACTION) Ví dụ: Nhân viên (MaNV, HoTen, MaPhong) Phong (Map, TenP, Soluong) Viết giao dịch để thay đổi phòng làm việc nhân viên ‘NV01’ từ phòng ‘KHCN’ sang phòng ‘NS’ BEGIN TRAN UPDATE NHANVIEN SET PHONG='NS‘ WHERE MaNV=NV01' COMMIT TRAN => Giao dịch thiếu tính chất gì? GIAO DỊCH KHÔNG TƯỜNG MINH (IMPLICIT TRANSACTION) Là giao dịch ngầm định Nó khơng u cầu phát biểu BEGIN TRAN Bản thân tự động khởi tạo Trong SQL Server, implicit transaction mặc định chế độ nghỉ Bật chế độ làm việc: SET implicit_transactions ON Tắt chế độ làm việc: SET implicit_transactions OFF GIAO DỊCH KHÔNG TƯỜNG MINH Sau chế độ Transaction implicit bật ON cho kết nối, SQL Server tự động bắt đầu transaction thực thi lệnh sau: ALTER TABLE REVOKE CREATE SELECT DELETE INSERT UPDATE DROP OPEN FETCH TRUNCATE TABLE GRANT AUTOCOMMIT TRANSACTION Chế độ chuyển giao tự động chế độ mặc định quản lý transaction SQL SERVER Một lệnh tự động committed thực thành cơng rollback gặp lỗi GIAO DỊCH TƯỜNG MINH (EXPLICIT TRANSACTION) BEGIN TRAN Declare @old_dept char(10) Select @old_dept=Maphong from NHANVIEN where MaNV=‘KS001’ UPDATE NHANVIEN SET PHONG='NS‘ WHERE MaNV='KS001' UPDATE Phong SET soluong=soluong+1 WHERE MaPhong='NS' UPDATE Phong SET soluong=soluong-1 WHERE MaPhong=@old_dept COMMIT TRAN GIAO DỊCH TƯỜNG MINH (EXPLICIT TRANSACTION) Ví dụ: Bảng TAIKHOAN cho biết số tài khoản (SOTK) số tiền tài khoản (SOTIEN).Viết giao dịch để chuyển 100 từ số tài khoản A sang số tài khoản B BEGIN TRAN UPDATE TAIKHOAN set SOTIEN=SOTIEN-100 where SOTK=‘A’ UPDATE TAIKHOAN set SOTIEN=SOTIEN+100 where SOTK=‘B’ COMMIT TRAN END => Giao dịch thiếu tính chất gì? BEGIN TRAN IF (SELECT SOTIEN FROM TAIKHOAN WHERE SOTK=‘A’) Tính quán... nhiều giao dịch lúc muốn cập nhật đơn vị liệu Khi đó, tác dụng giao dịch cập nhật sau ghi đè lên tác dụng cập nhật giao dịch trước Ví dụ: Hệ thống bán vé máy bay online 500 vé ◦ Vào lúc t1, giao dịch