intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 4 - Lê Thị Minh Nguyện

Chia sẻ: Phong Phong | Ngày: | Loại File: PDF | Số trang:13

59
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 4 trình bày về "Quản lý giao tác". Nội dung cụ thể của chương này gồm có: Giới thiệu, định nghĩa giao tác, tính chất ACID của giao tác, trạng thái của giao tác, khai báo giao tác trong SQL Server,...

Chủ đề:
Lưu

Nội dung Text: Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 4 - Lê Thị Minh Nguyện

8/25/2017<br /> <br /> Nội dung<br /> 1.<br /> 2.<br /> 3.<br /> 4.<br /> 5.<br /> 6.<br /> <br /> Chương 4.<br /> Quản lý giao tác<br /> GV: Lê Thị Minh Nguyện<br /> Email: nguyenltm@huflit.edu.vn<br /> <br /> Giới thiệu<br /> Định nghĩa giao tác<br /> Tính chất ACID của giao tác<br /> Trạng thái của giao tác<br /> Khai báo giao tác trong SQL Server<br /> Lịch biểu<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 1. Giới thiệu<br /> <br /> 1. Giới thiệu (tt)<br /> <br /> • Ví dụ<br /> <br /> • Khi DBMS gặp sự cố<br /> <br /> • Hệ thống giao dịch ngân hàng<br /> • Hệ thống đặt vé bay<br /> <br /> 2<br /> <br /> • Các thao tác có thể làm cho trạng thái CSDL không chính xác<br /> <br /> • DBMS là môi trường đa người dùng<br /> • Nhiều thao tác truy xuất lên cùng một đơn vị dữ liệu<br /> • Nhiều thao tác thi hành đồng thời<br /> Khách hàng 1<br /> <br /> Tìm thấy 1 chỗ trống<br /> Đặt vé bay<br /> <br /> Tài khoản B<br /> <br /> Đọc số dư của tài khoản A<br /> <br /> Khách hàng 2<br /> <br /> Tìm thấy 1 chỗ trống<br /> Thời gian<br /> <br /> Tài khoản A<br /> <br /> Kiểm tra (số dư > số tiền cần rút)<br /> <br /> 2 khách hàng đặt cùng 1<br /> chỗ trống ???<br /> <br /> Tăng số dư của tài khoản B<br /> <br /> Sự cố<br /> <br /> Giảm số dư của tài khoản A<br /> <br /> Ngân hàng chịu lỗ 1<br /> khoảng tiền ???<br /> <br /> Đặt vé bay<br /> Nguyên tố<br /> <br /> Cơ chế tuần tự<br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 3<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 4<br /> <br /> 1<br /> <br /> 8/25/2017<br /> <br /> 2. Định nghĩa giao tác<br /> <br /> 2. Định nghĩa giao tác (tt)<br /> <br /> • Giao tác là 1 đơn vị xử lý nguyên tố gồm 1 chuỗi các hành động<br /> tương tác lên CSDL. Khi thực hiện một giao tác hoặc phải thực<br /> hiện tất cả các hành động của nó hoặc thì không thực hiện<br /> hành động nào hết.<br /> <br /> CSDL nhất quán 1<br /> <br /> Giao tác<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> CSDL nhất quán 2<br /> <br /> 5<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 3. Tính chất ACID của giao tác<br /> <br /> 3.1. Tính Nguyên tố (Atomicity)<br /> <br /> 3.1. Tính Nguyên tố (Atomicity)<br /> <br /> • Tính Nguyên tố (Atomicity)<br /> • Hoặc là toàn bộ hoạt động của giao dịch được phản ánh đúng đắn trong<br /> <br /> 3.2. Tính Nhất quán (Consistency)<br /> <br /> CSDL hoặc không có hoạt động nào cả.<br /> <br /> 3.3. Tính Cô lập (Isolation)<br /> <br /> • Nói cách khác, tác dụng của các câu lệnh trong một giao tác phải như là<br /> một câu lệnh đơn. Không chia nhỏ ra được.<br /> <br /> 3.4. Tính Bền vững (Durability)<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 6<br /> <br /> 7<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 8<br /> <br /> 2<br /> <br /> 8/25/2017<br /> <br /> 3.2. Tính Nhất quán (Consistency)<br /> <br /> 3.1. Tính Nguyên tố (Atomicity) (tt)<br /> T:Read(A,t);<br /> t:=t-50;<br /> Write(A,t);<br /> Read(B,t);<br /> t:=t+50;<br /> Write(B,t);<br /> • A=100, B=200 (A+B=300)<br /> <br /> • Tính Nhất quán (Consistency)<br /> • Bất kỳ CSDL nào thì mọi ràng buộc tòan vẹn phải thỏa. Tại bất kỳ thời<br /> điểm mà mọi RBTV được thỏa gọi là tính nhất quán.<br /> • Một giao tác phải biến CSDL từ trạng thái nhất quán này sang trạng thái<br /> nhất quán khác không được phá vở trạng thái nhất quán. E1 T E2<br /> <br /> • Tại thời điểm sau khi write(A,t)<br /> <br /> (E1nhất quán thì E2 phải nhất quán).<br /> <br /> • A=50, B=200 (A+B=250) - CSDL không nhất quán<br /> <br /> • Tại thời điểm sau khi write(B,t)<br /> <br /> • Ví dụ: phái là nam hoặc nữ, nhưng gõ đến phái Enter đi qua<br /> <br /> • A=50, B=250 (A+B=300) - CSDL nhất quán<br /> <br /> mà cho phép thì không còn trạng thái nhất quán.<br /> <br /> • Nếu T không bao giờ bắt đầu thực hiện hoặc T được đảm bảo phải hoàn tất<br /> thì trạng thái không nhất quán sẽ không xuất hiện<br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 9<br /> <br /> 3.2. Tính Nhất quán (Consistency)<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 10<br /> <br /> 3.3. Tính Cô lập (Isolation)<br /> <br /> T: Read(A,t);<br /> t:=t-50;<br /> Write(A,t);<br /> Read(B,t);<br /> t:=t+50;<br /> Write(B,t);<br /> <br /> • Tính Cô lập (Isolation)<br /> • Một giao tác không quan tâm đến các giao tác khác xử lý đồng thời với<br /> nó<br /> <br /> • Khi có n giao tác xử lý đồng thời phải làm sao bảo đảm là tôi có<br /> <br /> • Consistency<br /> <br /> tính độc lập của riêng tôi.<br /> <br /> • Tổng A+B là không đổi<br /> • Nếu CSDL nhất quán trước khi T được thực hiện thì sau khi T<br /> hoàn tất CSDL vẫn còn nhất quán<br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 11<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 12<br /> <br /> 3<br /> <br /> 8/25/2017<br /> <br /> 3.3. Tính Cô lập (Isolation)<br /> T’<br /> <br /> 3.4. Tính Bền vững (Durability)<br /> • Tính Bền vững (Durability)<br /> <br /> T:Read(A,t);<br /> t:=t-50;<br /> Write(A,t);<br /> Read(B,t);<br /> t:=t+50;<br /> Write(B,t);<br /> <br /> • Mọi thay đổi mà giao tác thực hiện trên CSDL phải được ghi nhận<br /> bền vững<br /> <br /> • Giả sử có 1 giao tác T’ thực hiện phép toán A+B và chen vào giữa thời gian<br /> thực hiện của T<br /> • T’ kết thúc: A+B=50+200=250<br /> • T kết thúc: A+B=50+250=300<br /> • Hệ thống của các giao tác thực hiện đồng thời có trạng thái tương đương<br /> với trạng thái hệ thống của các giao tác thực hiện tuần tự theo 1 thứ tự nào<br /> đó.<br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 13<br /> <br /> T:Read(A,t);<br /> t:=t-50;<br /> Write(A,t);<br /> Read(B,t);<br /> t:=t+50;<br /> Write(B,t);<br /> <br /> • Khi T kết thúc thành công<br /> • Dữ liệu sẽ không thể nào bị mất bất chấp có sự cố hệ thống xảy<br /> ra<br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 14<br /> <br /> 4. Trạng thái của giao tác<br /> <br /> 3.4. Tính Bền vững (Durability) (tt)<br /> • Tính bền vững đảm bảo rằng một khi giao dịch được<br /> hoàn thành, tất cả các cập nhật trên CSDL là bền vững<br /> thậm chí nếu có lỗi hệ thống sau khi giao dịch hoàn<br /> thành thực hiện. Giả sử một lỗi hệ thống có thể dẫn đến<br /> mất mát dữ liệu trong bộ nhớ chính, nhưng dữ liệu<br /> được ghi vào đĩa không bao giờ bị mất.<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 15<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 16<br /> <br /> 4<br /> <br /> 8/25/2017<br /> <br /> 5. Khai báo giao tác trong SQL Server<br /> <br /> 5. Khai báo giao tác trong SQL Server (tt)<br /> <br /> • Giao tác SQL được định nghĩa dựa trên các câu lệnh xử lý giao tác<br /> sau :<br /> • BEGIN TRANSACTION: Bắt đầu một giao tác<br /> • SAVE TRANSACTION: Đánh dấu một vị trí trong giao tác (gọi là điểm đánh<br /> dấu).<br /> • ROLLBACK TRANSACTION: Quay lui trở lại đầu giao tác hoặc một điểm<br /> đánh dấu trước đó trong giao tác.<br /> • COMMIT TRANSACTION: Đánh dấu điểm kết thúc một giao tác. Khi câu<br /> lệnh này thực thi cũng có nghĩa là giao tác đã thực hiện thành công.<br /> • ROLLBACK [WORK]: Quay lui trở lại đầu giao tác.<br /> • COMMIT [WORK]: Đánh dấu kết thúc giao tác.<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 17<br /> <br /> 5. Khai báo giao tác trong SQL Server (tt)<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> • Cú Pháp:<br /> BEGIN TRANSACTION<br /> <br /> SQL Statements<br /> COMMIT | ROLLBACK TRANSACTION<br /> BEGIN TRANSACTION giaotac1<br /> UPDATE monhoc SET sodvht=4 WHERE sodvht=3<br /> UPDATE diemthi SET diemlan2=0 WHERE diemlan2 IS<br /> NULL<br /> ROLLBACK TRANSACTION giaotac1<br /> BEGIN TRANSACTION giaotac2<br /> UPDATE monhoc SET sodvht=4 WHERE sodvht=3<br /> UPDATE diemthi SET diemlan2=0 WHERE diemlan2 IS NULL<br /> COMMIT TRANSACTION giaotac2<br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 18<br /> <br /> 5. Khai báo giao tác trong SQL Server (tt)<br /> <br /> 19<br /> <br /> Hệ quản trị Cơ sở dữ liệu<br /> <br /> 20<br /> <br /> 5<br /> <br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2