Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 53 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
53
Dung lượng
2,16 MB
Nội dung
CHƯƠNG VI: GIAO TÁC GV: TUẤN NGUYÊN HOÀI ĐỨC Email: tnhduc@fit.hcmus.edu.vn Nội dung trình bày • Giao tác (Transac.on) • Xử lý đồng thời (Concurrency) • Chế độ khóa • Khai báo tường minh giao tác • Mức lập • Các cấp độ khóa • Dead-lock Chương VI : Giao tác Giao tác (transac7on) • Khái niệm • Chúng ta xây dựng CSDL để lưu trữ thông :n khai thác thông :n Công việc gọi chung xử lý thơng :n • Thực tế tồn bước xử lý thông :n tạo nên đơn nguyên (atom) : bước xử lý thực hết, không thực bước • Những đơn nguyên gọi giao tác (transac:on) Chương VI : Giao tác Giao tác (transaction) • Ví dụ : chuyển khoản 100$ từ tài khoản A sang tài khoản B (50$) tài khoản C (50$) Các bước thực gồm : • Trừ 100$ khỏi tài khoản A • Nếu số dư A < khơi phục số dư cũ ngưng • Nếu số dư A >=0 • Cộng 50$ vào tài khoản B • Cộng 50$ vào tài khoản C • Nếu số dư A = tất tốn tài khoản A Chương VI : Giao tác Giao tác (transac7on) • Ví dụ : • Giả sử vừa trừ :ền khỏi tài khoản A cố kỹ thuật sảy bước :ếp theo không thực 100$ Khơng chấp nhận • Các bước xử lý nêu làm phải làm cho hết, ngược lại khơng làm bước chúng tạo thành transac:on, nói cách khác đơn vị công việc nguyên tố Chương VI : Giao tác Giao tác (transaction) • Các anh chất : • Tính nguyên tố (Atomic) : Một giao tác đơn nguyên (atom), nghĩa công việc khơng tách rời • Tính qn (Consistent) : Một giao tác làm thay đổi wnh trạng CSDL, không làm xnh quán vốn có CSDL Chương VI : Giao tác Giao tác (transac7on) • Các anh chất : • Tính lập (Isolated) : Cơng việc giao tác bị chi phối phá hoại giao tác khác • Tính vững bền (Durable) : Kết làm việc giao tác phải lưu trữ bền vững vào CSDL Chương VI : Giao tác Giao tác (transaction) • Các $nh chất : • Atomic • Consistent • Isolated • Durable ACID Chương VI : Giao tác Giao tác (transac7on) • Các kiện giao tác • Begin tran : Giao tác bắt đầu • Commit tran : Giao tác hồn tất thành cơng • Rollback tran : Giao tác thất bại bị chấm dứt, thay đổi thực liệu bị hủy bỏ, liệu khơi phục trạng thái cũ Khơng có tác dụng biến cục • Save tran (khơng quy) : Ghi nhận bền vững phần kết giao tác xnh đến thời điểm save tran Chương VI : Giao tác Nội dung trình bày • Giao tác (Transac.on) • Xử lý đồng thời (Concurrency) • Chế độ khóa • Khai báo tường minh giao tác • Mức lập • Các cấp độ khóa • Dead-lock Chương VI : Giao tác 10 Mức cô lập cho giao tác Chương VI : Giao tác 39 Nội dung trình bày • Giao tác (Transac.on) • Xử lý đồng thời (Concurrency) • Chế độ khóa • Khai báo tường minh giao tác • Mức lập • Các cấp độ khóa • Dead-lock Chương VI : Giao tác 40 Các cấp độ khóa • Đặt vấn đề : Mức lập chưa đủ • Mức lập định cách phát giữ khóa S transac:on có hiệu lực tất thao tác đọc transac:on • Thực tế, ta cần phát giữ khóa S theo cách khác cho thao tác đọc khác transac:on • Ngồi ra, ta cần dùng nhiều dạng khóa linh động khóa S đơn giản Chương VI : Giao tác 41 Các cấp độ khóa • Khái niệm • Cấp độ khóa loại khóa khác (khơng khóa S) gắn vào table mệnh đề from thao tác select • Ngồi lệnh select, cấp độ khóa cịn gắn vào câu lệnh cập nhật, nhiên ta quan tâm câu select Chương VI : Giao tác 42 Các cấp độ khóa • Các cấp độ khóa • Read Uncommited / No lock • Read Commited (mặc định) • Repeatable • Serializable / Hold lock • Updlock • Tablock • TablockX • ReadPast…… Chương VI : Giao tác 43 Các cấp độ khóa • Cách thiết lập Select … From {Tab1 Alias1 with Lock_mode [,…n]} [,…n] Where … • Ví dụ : Select SV.HoVaTen, K.TenKhoa From SinhVien SV with ReadCommited, Khoa K with Updlock Where SV.Khoa = K.Ma And Year(SV.NgaySinh) >= 1983 Chương VI : Giao tác 44 Các cấp độ khóa • Phối hợp với Isola.on Level • Trong transac:on 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 Isola:on level ứng với yêu cầu bảo vệ nghiêm ngặt • Bổ sung lock mode vào thao tác yêu cầu bảo vệ nghiêm ngặt mức mà Isola:on level cung cấp Chương VI : Giao tác 45 Các cấp độ khóa • Khóa với liệu cursor • Nếu cursor loại —nh (sta:c) đơn vị liệu đọc lock vừa Open cursor • Nếu cursor loại động (Dynamic) fetch đến đâu khóa đến • Cách phát khóa giữ khóa mức lập connec:on lock mode câu select định nghĩa cursor định Chương VI : Giao tác 46 Nội dung trình bày • Giao tác (Transac.on) • Xử lý đồng thời (Concurrency) • Chế độ khóa • Khai báo tường minh giao tác • Mức lập • Các cấp độ khóa • Dead-lock Chương VI : Giao tác 47 Dead lock • Khái niệm • Khi xử lý đồng thời, không tránh khỏi việc transac:on phải chờ đợi transac:on khác • Nếu lý mà hai transac:on lại chờ lẫn vĩnh viễn, khơng hai hồn thành ta gọi tượng Dead Lock Chương VI : Giao tác 48 Dead lock • Phân loại • Cyclic Deadlock • Conversion Deadlock Chương VI : Giao tác 49 Dead lock • Phân loại • Cyclic Deadlock T1 Giữ X lock Trên đơn vị DL Đơn vị DL T2 DEAD LOCK Đơn vị DL Đơn vị DL Giữ X lock Trên đơn vị DL Đơn vị DL Đòi phát lock Trên đơn vị DL Đòi phát lock Trên đơn vị DL Chương VI : Giao tác 50 Dead lock • Phân loại • Conversion Deadlock T1 T2 Giữ S-Lock Giữ S-Lock Nâng cấp thành X-Lock Đơn vị liệu A DEAD LOCk Chương VI : Giao tác Nâng cấp thành X-Lock 51 51 Dead lock • Khi dead lock sảy • SQL Server chọn transac:on gây dead lock để hủy bỏ, transac:on lại :ếp tục thực hồn tất • Transac:on bị chọn hùy bỏ transac:on mà SQL ước xnh chi phí cho phần việc làm transac:on cịn lại Chương VI : Giao tác 52 Hết chương VI Chương VI : Giao tác 53