Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
116,5 KB
Nội dung
Bài 3 Transaction và Lock Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 2 trong 17 Nhắc lại Nhắc lại kiến thức lập trình với T-SQL: Khái niệm về bó lệnh (Batch) và tiến trình xử lý Batch Biến Các hàm cơ bản của SQL Server Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 3 trong 17 Mục tiêu Nắm được khái niệm giao dịch (transaction) Nắm được các khái niệm về thuộc tính, phân loại, tính riêng biệt và mức độ riêng biệt của giao dịch Sử dụng các khái niệm về transaction để thực thi giao dịch SQL Transaction và tập lệnh (batch) Nắm được các khái niệm khóa (lock) và khóa chết (deadlock) Giải quyết các deadlock bằng cách đặt mức độ ưu tiên cho các transaction Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 4 trong 17 Giới thiệu Một transaction hoặc là sẽ thực hiện thành công hoàn toàn hoặc là sẽ không thay đổi một chút dữ liệu nào Giao dịch (Transaction) là một đơn vị công việc Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 5 trong 17 Các thuộc tính Transaction Tính hoàn chỉnh (Atomicity) Tính nhất quán (Consistency) Tính riêng biệt (Isolation) Tín bền vững (Durability) Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 6 trong 17 Phân loại Transaction Giao dịch tường minh (Explicit transaction) Giao dịch ngầm định (Implicit transaction) Giao dịch xác nhận (Commit transaction) Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 7 trong 17 Transaction Isolation và Isolation Levels Read Uncommitted Read Committed Repeatable read Serializable Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 8 trong 17 Sử dụng Transaction Log Nhật ký giao dịch (Transaction log) là một File riêng biệt (hoặc lưu ở vùng đĩa riêng) ở trong database server nó lưu trữ dấu vết thực hiện của các thao tác Bằng cách lưu trữ dấu vết thực hiện trong têp nhật ký (log), database server dễ dàng khôi phục lại dữ liệu khi gặp sự cố Transaction log đảm bảo tính hoàn chỉnh và tính bền vững SQL Server viết tất cả các thay đổi trên CSDL xuống transaction log, vì vậy nếu transaction đã bắt đầu nhưng chưa chạy xong, chúng ta vẫn có thể phục hồi lại tất cả các thay đổi từ file log Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 9 trong 17 Transaction với T-SQL BEGIN TRANSACTION COMMIT TRANSACTION ROLLBACK TRANSACTION SAVE TRANSACTION Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 10 trong 17 Locks Khóa (Lock) được sinh ra để giới hạn quyền truy nhập trên môi trường đa người dùng Microsoft SQL Server 2000 sử dụng lock để đảm bảo tính toàn vẹn của transaction và tính thống nhất của database Nếu lock không được sử dụng, dữ liệu bên trong CSDL có thể bị sai về logíc, và các query chạy trên đó sẽ đưa ra các kết quả không mong đợi Bản chất của lock là việc một người muốn truy nhập riêng vào một bảng, vì vậy server sẽ lock bảng đó lại cho riêng người đó [...]... Server tự động lock các tài nguyên record, field, hoặc file, để ngăn cản các thao tác đồng thời trên Thiết kế CSDL và thực thi với dữ liệu SQL Server / Bài 3 / 16 trong 17 Tóm tắt (tiếp)… Các kiểu của Lock: Pessimistic Locks Optimistic locks Shared Locks Exclusive Locks Update Locks Deadlock xẩy ra khi có 2 user (hoặc 2 phiên làm việc) đã lock 2 đối tượng riêng, và mỗi user muốn lock đối tượng... động nhận ra deadlock và giải quyết bằng cách chọn một ứng dụng và bắt nó phải giải phóng khóa, trong khi đó vẫn cho ứng dụng còn lại chạy tiếp Cách tốt nhất để tránh deadlock là tránh nó Một cách để tránh nó là không chạy các transaction đồng thời Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 12 trong 17 Giải quyết Deadlock SET DEADLOCK_PRIORITY SET LOCK_ TIMEOUT Thiết kế CSDL và thực thi với...Phân loại các Locks trong SQL Server Pessimistic Lock Optimistic Lock Shared Locks Exclusive Locks Update Locks Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 11 trong 17 Deadlock Một deadlock xảy ra khi có 2 người dùng (hoặc 2 phiên làm việc) đã đặt khóa trên 2 đối tượng riêng, và mỗi user muốn đặt khóa trên đối tượng của user kia Mỗi... Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 15 trong 17 Tóm tắt (tiếp)… Transaction log là một phần quan trọng để bảo vệ dữ liẹu Bằng cách ghi lại vết các thao tác trong log, database server dễ dàng khôi phục lại dữ liệu khi gặp sự cố Transact-SQL sử dụng các câu lệnh sau để quản lý transaction: BEGIN TRANSACTION COMMIT TRANSACTION ROLLBACK TRANSACTION SAVE TRANSACTION Lock được sử... LOCK_ TIMEOUT Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 13 trong 17 Tóm tắt Quá trình truy nhập và thay đổi nội dung CSDL được gọi là giao dịch (transaction) Một transaction có thể thao tác cả đọc lẫn ghi Khi transaction được thực hiện bởi nhiều user có thể sẽ chạy đồng thời và truy nhập lẫn các đối tượng của CSDL Các thuộc tính của Transaction là: Atomicity Consistency Isolation... Các thuộc tính trên còn được gọi là thuộc tính ACID Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 14 trong 17 Tóm tắt (tiếp)… Các transaction có thể phân loại như sau: Explicit transaction Implicit transaction Commit transaction Chuẩn ANSI SQL quy định 4 mức độ chạy riêng biệt của transaction Các mức độ này chỉ ra cách chạy transaction với mức độ riêng biệt của dữ liệu Các mức độ như sau:... xẩy ra khi có 2 user (hoặc 2 phiên làm việc) đã lock 2 đối tượng riêng, và mỗi user muốn lock đối tượng của user kia Mỗi user đều phải đợi người kia giải phóng lock của họ ra để mình có thể Thiết kế CSDL và thực thi với lock SQL Server / Bài 3 / 17 trong 17 . loại các Locks trong SQL Server Pessimistic Lock Optimistic Lock Shared Locks Exclusive Locks Update Locks Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 12 trong 17 Deadlock Một. Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 9 trong 17 Transaction với T-SQL BEGIN TRANSACTION COMMIT TRANSACTION ROLLBACK TRANSACTION SAVE TRANSACTION Thiết kế CSDL và thực thi. Bài 3 Transaction và Lock Thiết kế CSDL và thực thi với SQL Server / Bài 3 / 2 trong 17 Nhắc lại Nhắc lại kiến thức lập trình với T-SQL: Khái niệm về bó lệnh (Batch) và tiến trình