Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 62 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
62
Dung lượng
1,17 MB
Nội dung
Chương Thiết kế sở liệu vật lý Giáo viên: Đỗ Thị Mai Hường Bộ môn: Hệ thống thông tin Khoa: Công nghệ thông tin Nội dung Giao dịch (Transaction) Khái niệm giao dịch Các tính chất ACID giao dịch Sử dụng giao dịch SQL server Các vấn đề truy xuất đồng thời Lịch biểu (Schedule) Kỹ thuật khóa SQL Server LOGO Giao dịch LOGO Giao dịch đơn vị xử lý nguyên tố gồm chuỗi hành động tương tác lên CSDL Khi thực giao dịch phải thực tất hành động khơng thực hành động hết Một số thuật ngữ liên quan đến giao dịch: Begin [transaction/tran] : bắt đầu transaction Commit [transaction/tran] : hoàn tất transaction Rollback [transaction/tran] : quay lui, hủy bỏ toàn phần giao dịch thực trước Giao dịch (tt) LOGO Tính chất ACID giao dịch Tính ngun tố (Atomicity): Khơng thể chia nhỏ Tính quán (Consistancy) Giao dịch khơng phá vỡ trạng thái qn CSDL Tính độc lập (Isolation) Giao dịch không ảnh hưởng/ chịu ảnh hưởng giao dịch khác Giao dịch (tt) LOGO Tính chất ACID giao dịch Tính bền vững (Durability) Sau giao dịch commit thành công, tất thay đổi CSDL mà giao dịch thực phải ghi nhận chắn (vào ổ cứng) HQT CSDL ln phải có chế phục hồi liệu để đảm bảo điều này, thường dùng chế ghi nhận transaction log Giao dịch (tt) LOGO Để đảm bảo tính Atomicity Để đảm bảo tính chất A giao dịch, người sử dụng phải điều khiển tường minh rollback giao dịch Cần kiểm tra lỗi sau thực thao tác giao dịch để xử lý rollback kịp thời Kiểm tra lỗi: dùng try…catch @@error Ví dụ: TAIKHOAN (MaTK, ChuTK, SoDuTK) Viết thủ tục để chuyển khoản số tiền từ tài khoản sang tài khoản khác LOGO Truy xuất đồng thời Giao dịch (Transaction) Các vấn đề truy xuất đồng thời Mất liệu cập nhật (Lost Updated) Đọc phải liệu rác (Dirty Read) Không thể đọc lại (Unrepeatable Read) “Bóng ma” liệu (Phantom) Lịch biểu (Schedule) Kỹ thuật khóa SQL Server LOGO Truy xuất đồng thời LOGO Xử lý truy xuất đồng thời: yêu cầu truy xuất xảy lúc (thực đan xen với nhau) Có loại: Không tranh chấp: n yêu cầu truy xuất n đơn vị liệu Có tranh chấp: Ví dụ: tài khoản cịn có 120, người truy xuất tài khoản: người rút 100, người rút 80 LOGO Mất liệu cập nhật (Lost Updated) P1 P2 xử lý đồng thời: A=30 A=15 A=20 A=20 A=20 A=15 A=30 A=15 A=30 A=30 Repeatable Read LOGO Ưu điểm: Giải vấn đề: Lost Updated, Dirty Read Unrepeatable Read Khuyết điểm: Chưa giải vấn đề Phantom, cho phép insert dòng liệu thỏa điều kiện thiết lập Slock Slock giữ đến hết giao dịch ==> cản trở việc cập nhật liệu giao dịch khác Serializable LOGO Đặc điểm: Đọc liệu: SQL server tự động thiết lập SLock đơn vị liệu đọc giữ Slock đến hết giao dịch Khơng cho phép thêm dịng liệu thỏa mãn điều kiện thiết lập Slock Ghi liệu: SQL server tự động thiết lập XLock đơn vị liệu ghi, ELock giữ hết giao dịch Serializable + vấn đề Phantom HANGHOA Nồi cơm điện Sharp IP IPad Cái 100 10000000 LOGO Serializable LOGO Ưu điểm: Giải vấn đề: Lost Updated, Dirty Read, Unrepeatable Read Phantom Khuyết điểm: Slock giữ đến hết giao dịch ==> cản trở việc cập nhật liệu giao dịch khác Không cho phép Insert dòng liệu thỏa mãn điều kiện thiết lập Slock ==> cản trở việc thêm liệu giao dịch khác Kỹ thuật khóa SQL Server LOGO Lưu ý: Mức cô lập mặc định SQL Server Read Commited Mức cô lập khơng quan tâm khóa Ulock Tầm vực Isolation level mức connection mức transaction • Khi connection N đặt mức lập X X phát huy hiệu lực tất transaction Ti chạy N Kỹ thuật khóa SQL Server Kỹ thuật khóa SQL Server Kỹ thuật khóa (Locking) Mức lập giao dịch Khóa trực tiếp câu lệnh Deadlock LOGO Kỹ thuật khóa SQL Server LOGO Mức cô lập định cách phát giữ khóa S transaction có hiệu lực tất thao tác đọc transaction Thực tế, ta cần phát giữ khóa Slock theo cách khác cho thao tác đọc khác transaction Khóa trực tiếp câu lệnh Cú pháp: 5 LOGO Các chế độ khóa trực tiếp (lock mode) LOGO LOGO Kết hợp Mức cô lập + Khóa trực tiếp LOGO Trong transaction ln có thao tác yêu cầu bảo vệ nghiêm ngặt thao tác yêu cầu bảo vệ nghiêm ngặt Dùng mức lập ứng với u cầu bảo vệ nghiêm ngặt Bổ sung lock trực tiếp vào thao tác yêu cầu bảo vệ nghiêm ngặt mức mà mức lập cung cấp Kỹ thuật khóa SQL Server Kỹ thuật khóa SQL Server Kỹ thuật khóa (Locking) Mức lập giao dịch Khóa trực tiếp câu lệnh Deadlock LOGO Deadlock LOGO Khi xử lý đồng thời, không tránh khỏi việc transaction phải chờ đợi transaction khác Nếu lý mà hai transaction lại chờ lẫn vĩnh viễn, không hai hồn thành ta gọi tượng Dead Lock 60 Xử lý Deadlock SQL Server LOGO SQL Server chọn transaction gây deadlock để hủy bỏ, transaction lại tiếp tục thực hoàn tất Transaction bị chọn hủy bỏ transaction mà SQL ước tính chi phí cho phần việc làm transaction cịn lại 61 Xử lý DeadLock SQL Server LOGO 62