Bài giảng cơ sở dữ liệu chương 7 ths lương thị ngọc khánh

26 228 0
Bài giảng cơ sở dữ liệu  chương 7   ths  lương thị ngọc khánh

Đ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

CHƯƠNG 7: CHUYểN TÁC VÀ KHÓA (TRANSACTIONS AND LOCKS) ThS Lương Thị Ngọc Khánh Khoa CNTT – ĐH Tôn Đức Thắng KHÁI NIệM Về CHUYểN TÁC   Gồm nhiều bước Các bước thi hành Cả công việc thất bại bước thực bị thất bại ThS Lương Thị Ngọc Khánh – K CNTT  tác dùng để công việc 10/31/12  chuyển KHÁI NIệM Về CHUYểN TÁC (TT)    Atomic: Tất bước gói chuyển tác hành động Consistency: Dữ liệu đảm bảo toàn vẹn cho dù transaction có thành cơng hay khơng Isolation: Khi hai transaction thực đồng thời, chúng giữ độc lập để kết không ảnh hưởng lẫn Durability: Sau transaction thực thành công, liệu đảm bảo kể hệ thống bị cố ThS Lương Thị Ngọc Khánh – K CNTT  ACID 10/31/12  Tính CHUYểN TÁC KHƠNG TƯờNG MINH Server chia câu lệnh thực làm hai loại  chuyển tác tường minh chuyển tác không tường minh ThS Lương Thị Ngọc Khánh – K CNTT  10/31/12  SQL  Mặc định, SQL Server thực lệnh chế độ chuyển tác không tường minh   Mỗi câu lệnh coi transaction: INSERT, UPDATE, DELETE,… Sau thực lệnh, thay đổi liệu cập nhật vào CSDL CHUYểN TÁC TƯờNG MINH tác tường minh chuyển tác phải khai báo trước 10/31/12  chuyển Sử dụng từ khoá Begin Tran  Các lệnh theo sau thuộc vào chuyển tác khai báo  Tác dụng thay đổi liệu cập nhật vào CSDL ThS Lương Thị Ngọc Khánh – K CNTT  Các chuyển tác khác không thấy thay đổi  Sẽ bị hủy bỏ phiên làm việc client – server chấm dứt   Kết  Quá trình thực lệnh, bị lỗi hủy bỏ chuyển tác lệnh Rollback Tran   thúc chuyển tác Toàn liệu thay đổi bị hủy bỏ Khi lệnh hoàn tất, kết thúc chuyển tác Commit Tran  Dữ liệu thay đổi lưu lại CHUYểN TÁC BEGIN TRAN chuyển tác đơn giản trình xử lý chuyển tác, điểm bắt đầu khối chuyển tác  Cú pháp:  ThS Lương Thị Ngọc Khánh – K CNTT  10/31/12  Là Begin tran[saction] [ten_giaodich | ] CHUYểN TÁC COMMIT TRAN xác định kết thúc hay hoàn thành chuyển tác Tại thời điểm commit gọi, chuyển tác xem thực thành công  Cú pháp:  ThS Lương Thị Ngọc Khánh – K CNTT  10/31/12  Commit Commit tran[saction] [ten_giaodich | ] dụ: 10/31/12  Ví Begin tran ThS Lương Thị Ngọc Khánh – K CNTT Update bang1 set cot1 = ‘AB’ where cot2 = ‘BB’ Insert bang2 values(‘gtri1’,’gtri2’) Select * from bang2 Commit tran CHUYểN TÁC ROLLBACK TRAN gặp chuyển tác tất phát biểu thực từ gặp chuyển tác Begin bị hủy bỏ Ngoại trừ định nghĩa thêm điểm dừng cho thao tác Rollback  Cú pháp: 10/31/12  Khi ThS Lương Thị Ngọc Khánh – K CNTT Rollback tran[saction] [ rollback tran Else commit tran 10 VÍ Dụ 12 ThS Lương Thị Ngọc Khánh – K CNTT Kết trả Tổng vật tư trước thêm 11 Tổng vật tư sau thêm chuyển tác 12 Tổng vật tư 11 10/31/12 SET ANSI_WARNINGS OFF GO SELECT COUNT(*) AS 'Tổng vật tư trước thêm' FROM VATTU BEGIN TRAN INSERT INTO VATTU (Mavtu, Tenvtu, Dvtinh, Phantram) VALUES ('BU01', 'Bàn ủi PhiLip', 'Cái', 17) SELECT COUNT(*) AS 'Tổng vật tư sau thêm chuyển tác' FROM VATTU ROLLBACK TRAN SELECT COUNT(*) AS 'Tổng vật tư tại' FROM VATTU SET ANSI_WARNINGS ON VÍ Dụ TRANSACTION 10/31/12 ThS Lương Thị Ngọc Khánh – K CNTT 13 KHÓA (LOCK) (Lock) sinh để giới hạn quyền truy nhập môi trường đa người dùng  Microsoft SQL Server sử dụng lock để đảm bảo tính tồn vẹn transaction tính thống database  Nếu lock khơng sử dụng, liệu bên CSDL bị sai logíc, query chạy đưa kết không mong đợi  Bản chất lock việc người muốn truy nhập riêng vào bảng, server lock bảng lại cho riêng người 10/31/12  Khóa ThS Lương Thị Ngọc Khánh – K CNTT 14 CÁC VấN Đề CÓ THể NGĂN NGừA BằNG LOCK    Dirty reads (đọc liệu sai) Unrepeatable reads (đọc hai lần ghi) Phantoms (đọc ghi nháp, không có) Lost updates (cập nhật, liệu) ThS Lương Thị Ngọc Khánh – K CNTT  giải vấn đề sau: 10/31/12  Lock 15 ĐọC Dữ LIệU SAI (DIRTY READS) liệu sai xảy chuyển tác đọc ghi mà phần chuyển tác khác chưa hoàn thành  Nếu chuyển tác trước hồn thành khơng xảy vấn đề này, chuyển tác trước chưa hoàn thành hay thực chế độ rollback phải đọc liệu cũ, liệu sai 10/31/12  Đọc ThS Lương Thị Ngọc Khánh – K CNTT 16 ĐọC BảN GHI LầN đọc mẫu tin lần chuyển tác chuyển tác khác thơng báo tình trạng liệu khoảng thời gian quy định 10/31/12  Khi ThS Lương Thị Ngọc Khánh – K CNTT 17 ĐọC CÁC BảN GHI KHƠNG CĨ (PHANTOMS) đọc ghi khơng có Vì ghi xuất không bị tác động lệnh update delete  Khác với vấn đề phantoms vấn đề liên quan đến hệ điều hành, không yêu cầu sơ đồ để mô tả 10/31/12  Nghĩa ThS Lương Thị Ngọc Khánh – K CNTT 18 CậP NHậT MấT Dữ LIệU (LOST UPDATE) chuyển tác cập nhật liệu vào sở liệu thành công, lại ghi đè lên liệu chuyển tác khác  Xảy chuyển tác đọc mẫu tin liệu, sau chuyển tác ghi liệu ghi, chuyển tác ghi kết có chuyển tác cập nhật 10/31/12  Xảy ThS Lương Thị Ngọc Khánh – K CNTT 19 CHế Độ LOCK  ThS Lương Thị Ngọc Khánh – K CNTT Đây loại nhất, lock chia sẻ tài nguyen cho phép đọc liệu, không cho phép thay đổi thuộc tính tài nguyên  Khóa  chia sẻ (Share locks) 10/31/12  Khóa độc quyền (exclusive locks) Khơng tương thích với loại khóa khác, khóa ngăn ngừa người sử dụng cập nhật, xóa, thêm liệu 20 VÍ Dụ dụ để thiết lập khóa độc quyền bảng authors khơng hiệu chỉnh bảng xem chúng, chạy truy vấn:  Select * From authors (TABLELOCKXX)  Một  ThS Lương Thị Ngọc Khánh – K CNTT  10/31/12  Ví số tham số: NOLOCK 21 CHế Độ LOCK (TT)   Kết hợp share lock exclusive lock Với câu lệnh update ghi mệnh đề where, chưa cần cập nhật trạng thái share lock Khi câu lệnh update thực chế độ exclusive lock intent locks Dùng giải phân cấp đối tượng Trong sql server, intent locks giải đến bảng không quan tâm đến ghi ThS Lương Thị Ngọc Khánh – K CNTT  cập nhật (Update locks) 10/31/12  Khóa 22 CHế Độ LOCK (TT)  Schema modification locks: giản đồ thay đổi cách tạo đổi tượng, không yêu cầu phát biểu create, alter, drop Schema stability lock: tương tự share lock, lock ngăn ngừa yêu cầu phát biểu create, alter, drop thiết lập schema modification lock ThS Lương Thị Ngọc Khánh – K CNTT  locks xuất phát từ loại sau: 10/31/12  Schema 23 VÍ Dụ sách vào bảng sách kèm với việc thêm vào nhà xuất vào bảng nhaxuatban tác giả vào bảng tacgia Viết kịch để thêm tất thông tin cho tất kết thúc hỏng    ThS Lương Thị Ngọc Khánh – K CNTT  10/31/12  Thêm Sach(masach, tensach, sotrang, namxb, manxb) Nhaxuatban(manxb, tennxb, diachi) Tacgia(matg, tentg, ngaysinh) Tacgia_sach(masach, matg) 24 VÍ Dụ  Docgia(madg, ngaysinh, hoten, diachi) Viết thủ tục thực công việc thêm độc giả vào bảng độc giả cho độc giả chưa tồn bảng độc giả tuổi lớn 18  ThS Lương Thị Ngọc Khánh – K CNTT  bảng sau: 10/31/12  Cho Gợi ý: công việc cần làm:  Kiểm tra mã độc giả trùng  Thêm độc giả  Kiểm tra tuổi 25 Create proc sp_themdocgia18tuoi ThS Lương Thị Ngọc Khánh – K CNTT kiểm tra madg If not exists(select * from docgia where madg = @madg) Thêm độc giả Insert into docgia values(@madg, @hoten, @ngaysinh, @diachi) If (@@error 0) begin rollback tran End Kiểm tra tuổi If datediff(yy, @ngaysinh, getdate())

Ngày đăng: 03/12/2015, 01:03

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan