1. Trang chủ
  2. » Tất cả

ch4_transaction

22 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 416,88 KB

Nội dung

09/08/2017 Chương 4: QUẢN LÝ GIAO TÁC VÀ KHÓA GV: Nguyễn Thị Hạnh Khái niệm giao dịch - Transaction ˗ Giao dịch đơn vị xử lý nguyên tố bao gồm nhiều lệnh thực đồng thời lệnh tương tác đến CSDL ˗ Các lệnh giao dịch thực theo nguyên tắc tất thành công lệnh thất bại tồn giao dịch thất bại ˗ Nếu việc thực thi lệnh bị thất bại liệu phải rollback trạng thái ban đầu GV: Nguyễn Thị Hạnh 09/08/2017 Các thuộc tính Transaction - ACID ˗ Atomic (nguyên tố): lệnh transaction bị fail liệu trở lại trạng thái ban đầu ˗ Consistency (Nhất quán): giao dịch không phá vỡ trạng thái quán CSDL ˗ Isolation (cô lập): giao dịch không ảnh hưởng bị ảnh hưởng giao dịch khác ˗ Durability (Bền): sau giao dịch thành công kết giao dịch trì CSDL GV: Nguyễn Thị Hạnh Các thuộc tính Transaction - ACID ˗ Để đảm bảo tính Atomic giao dịch, người dùng cần điều khiển tường minh việc Rollback gao dịch ˗ Kiểm tra lỗi thực lệnh giao dịch để xử lý rollback ˗ Ví dụ: viết thủ tục chuyển tiền từ tài khoản đến tài khoản khác taikhoan (MaTK, TenTK, SoduTK) GV: Nguyễn Thị Hạnh 09/08/2017 Ví dụ GV: Nguyễn Thị Hạnh Loại giao dịch ˗ Có loại giao dịch: Explicit transactions: giao dịch tường minh Autocommit transactions: giao dịch tự động Implicit transactions: giao dịch ngầm GV: Nguyễn Thị Hạnh 09/08/2017 Explicit transactions BEGIN TRAN[SACTION] T-SQL statements @@TRANCOUNT = IF ROLL BACK ELSE COMMIT @@TRANCOUNT = GV: Nguyễn Thị Hạnh Explicit transactions ˗ Tạo điểm lưu (SAVE POINT) save tran tên_điểm_lưu ˗ Hủy sau điểm lưu rollback GV: Nguyễn Thị Hạnh 09/08/2017 Điểm lưu (save point) ˗ begin tran t1 lệnh | khối_lệnh save tran s1 • lệnh | khối_lệnh rollback tran s1 => chưa chấm dứt t1 lệnh | khối_lệnh ˗ commit tran t1 => Rollback tran s1 hủy bỏ kết sau lệnh save tran s1 tiếp tục làm tiếp (giao tác t1 còn) GV: Nguyễn Thị Hạnh Autocommit Transactions ˗ Autocommit mode: mode quản lý transaction mặc định SQL Server ˗ Một giao dịch committed thực thành công hay trả ngược lại ban đầu (roll back) gặp lỗi ˗ Lệnh BEGIN TRANSACTION vượt quyền autocommit mặc định GV: Nguyễn Thị Hạnh 09/08/2017 Implicit transactions ˗ Giao dịch ngầm định, thiết lập có kết nối đến CSDL, tạo chuỗi giao dịch, tự động commit rollback giao dịch ˗ Bắt đầu giao tác với lệnh ALTER TABLE, DROP, TRUNCATE TABLE, CREATE, OPEN, FETCH, REVOKE, GRANT DELETE, INSERT, SELECT, UPDATE ˗ Kết thúc lệnh : commit | rollback tran GV: Nguyễn Thị Hạnh Implicit transactions ˗ Thiết lập thông số : SET IMPLICIT_TRANSACTIONS ON|OFF GV: Nguyễn Thị Hạnh 09/08/2017 Các vấn đề truy xuất đồng thời ˗ ˗ ˗ ˗ Lost updated: Mất liệu cập nhật Dirty Read: Đọc liệu rác Unrepeatable Read: Không thể đọc lại Phantom Read: Đọc liệu ma GV: Nguyễn Thị Hạnh Mất liệu cập nhật - Lost updated ˗ Xét ví dụ: GV: Nguyễn Thị Hạnh 09/08/2017 Đọc liệu rác - Dirtty Read GV: Nguyễn Thị Hạnh Không thể đọc lại - Unrepeatable Read GV: Nguyễn Thị Hạnh 09/08/2017 Đọc liệu ma – Phantom Read GV: Nguyễn Thị Hạnh Cơ chế khóa - Lock ˗ Một giao dịch P trước muốn thao tác (Read/Write) đơn vị liệu A phải phát yêu cầu xin khóa: Lock (A) ˗ Nếu yêu cầu chấp nhận giao dịch phép thao tác liệu A ˗ Sau thao tác xong giao dịch P phải phát lệnh giải phóng A: unlock (A) GV: Nguyễn Thị Hạnh 09/08/2017 Cơ chế khóa - Lock ˗ Ví dụ: GV: Nguyễn Thị Hạnh Khóa đọc khóa ghi ˗ Read lock = Shared lock (Slock) Giao dịch giữ Slock phép ĐỌC liệu, không phép ghi Nhiều giao dịch đồng thời giữ nhiều Slock đơn vị liệu ˗ Write lock = Exclusive lock (Xlock) Giao dịch giữ Xlock phép GHI+ ĐỌC liệu Tại thời điểm có tối đa giao dịch quyền giữ Xlock đơn vị liệu Không thể thiết lập Slock đơn vị liệu có Xlock GV: Nguyễn Thị Hạnh 09/08/2017 Khóa dự định ghi – Update lock ˗ Ulock sử dụng đọc liệu với dự định ghi lại liệu ˗ Ulock trung gian Slock Xlock ˗ Khi thực thao tác ghi lên liệu bắt buộc Ulock phải tự động chuyển Ulock ˗ Giao dịch giữ Ulock phép ĐỌC GHI liệu ˗ Tại thời điểm có giao tác quyền Ulock đơn vị liệu ˗ Có thể thiết lập Slock đơn vị liệu có Ulock GV: Nguyễn Thị Hạnh Các mức cô lập giao dịch ˗ Mục đích: Tự động đặt khóa cho thao tác đọc kết nối đế liệu hành ˗ SQL hỗ trợ mức cô lập Read Uncommitted Read Committed (The default) Repeatable Read Serializable GV: Nguyễn Thị Hạnh 09/08/2017 Read uncommited ˗ Đặc điểm Đọc liệu: không cần thiết lập Slock Ghi liệu: SQL Server tự động thiết lập Xlock đơn vị liệu ghi Xlock giữ hết giao dịch GV: Nguyễn Thị Hạnh Read uncommited ˗ Khi transaction thực mức này, truy vấn truy cập vào ghi cập nhật transaction khác nhận liệu thời điểm liệu chưa commit GV: Nguyễn Thị Hạnh 09/08/2017 Read uncommitted Lost Updated GV: Nguyễn Thị Hạnh Read uncommitted Lost Updated GV: Nguyễn Thị Hạnh 09/08/2017 Read uncommited ˗ Ưu điểm: Giải vấn đề Lost Updated Không cần thiết lập Slock, không cản trở giao dịch khác Xlock ˗ Hạn chế: Có khả xãy vấn đề truy xuất đồng thời: Dirty Read, Unrepeatable Read, Phantom GV: Nguyễn Thị Hạnh Read commited ˗ Đặc điểm Đọc liệu: SQL tự động thiết lập Slock đơn vị liệu đọc, Slock giải phóng đọc xong Ghi liệu: SQL tự động thiết lập Xlock đơn vị liệu ghi, Xlock giữ kết thúc giao dịch GV: Nguyễn Thị Hạnh 09/08/2017 Read commited ˗ Đây mức isolation mặc định Transaction không đọc liệu cập nhật mà phải đợi đến việc cập nhật thực xong ˗ Tránh dirty read mức GV: Nguyễn Thị Hạnh Read commited Dirty read ˗ Ví dụ: GV: Nguyễn Thị Hạnh 09/08/2017 Read commited Unrepeatable read ˗ Ví dụ GV: Nguyễn Thị Hạnh Read commited ˗ Ưu điểm Giải vấn đề Dirty read, Lost Updated Slock giải phóng ngay, khơng cản trở nhiều đến thao tác ghi liệu giao tác khác ˗ Hạn chế Chưa giải vấn đề Unrepeatable read, Phantom GV: Nguyễn Thị Hạnh 09/08/2017 Repeatable read ˗ Đặc điểm Đọc liệu: SQL tự động thiết lập Slock đơn vị liệu đọc Slock kết thúc giao dịch Ghi liệu: SQL tự động thiết lập Xlock đơn vị liệu ghi, Xlock giữ đến kết thúc giao dịch GV: Nguyễn Thị Hạnh Repeatable read ˗ Mức isolation hoạt động mức read commit nâng thêm nấc cách ngăn không cho transaction ghi vào liệu đọc transaction khác transaction khác hồn tất GV: Nguyễn Thị Hạnh 09/08/2017 Repeatable read vấn đề Unrepeatable read ˗ Ví dụ: GV: Nguyễn Thị Hạnh Repeatable read vấn đề Phantom read ˗ Ví dụ GV: Nguyễn Thị Hạnh 09/08/2017 Repeatable read ˗ Ưu điểm Giải vấn đề: Lost Updated, Dirty read, Unrepeatable read ˗ Hạn chế 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ữ kết thúc giao dịch, cản trở việc truy cập liệu giao dịch khác GV: Nguyễn Thị Hạnh Serializable ˗ Đặc điểm Đọc liệu: SQL tự động thiết lập Slock đơn vị liệu đọc giữ kết thúc 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 tự động thiêt lập Xlock đơn vị liệu ghi Xlock giữ giao dịch kết thức GV: Nguyễn Thị Hạnh 09/08/2017 Serializable ˗ Mức isolation tăng thêm cấp khóa tồn dải ghi bị ảnh hưởng transaction khác, dù UPDATE/DELETE ghi có hay INSERT ghi Nếu bạn thay cửa sổ đoạn code SET TRANSACTION ISOLATION LEVEL SERIALIZABLE BEGIN TRAN GV: Nguyễn Thị Hạnh Serializable vấn đề Phantom ˗ Ví dụ GV: Nguyễn Thị Hạnh 09/08/2017 Serializable ˗ Ưu điểm Giải vấn đề: Lost Updated, Dirty Read, Unrepeatable read, Phantom ˗ Hạn chế Slock giữ 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 GV: Nguyễn Thị Hạnh Đặt vấn đề ˗ Các mức cô lập định phát khóa Slock giao tác có hiệu lực tất thao tác đọc giao tác ˗ Thực tế, cần phát khóa Slock theo cách khác cho thao rác đọc khác torng giao dịch GV: Nguyễn Thị Hạnh 09/08/2017 Khóa trực tiếp câu lệnh ˗ Cú pháp GV: Nguyễn Thị Hạnh

Ngày đăng: 13/04/2022, 00:16

TÀI LIỆU CÙNG NGƯỜI DÙNG