• 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 nhất quán khác không được phá vở trạng thái nhất quán.. Tính Cô lập ( I solation).[r]
Trang 1Chương 4.
Quản lý giao tác
GV: Lê Thị Minh Nguyện Email: nguyenltm@huflit.edu.vn
Nội dung
1 Giới thiệu
2 Định nghĩa giao tác
3 Tính chất ACID của giao tác
4 Trạng thái của giao tác
5 Khai báo giao tác trong SQL Server
6 Lịch biểu
1 Giới thiệu
• Ví dụ
•Hệ thống giao dịch ngân hàng
•Hệ thống đặt vé bay
• DBMS là môi trường đa người dùng
•Nhiều thao tác truy xuất lên cùng một đơn vị dữ liệu
•Nhiều thao tác thi hành đồng thời
Khách hàng 1 Khách hàng 2
Tìm thấy 1 chỗ trống
Tìm thấy 1 chỗ trống 2 khách hàng đặt cùng 1
1 Giới thiệu (tt)
• Khi DBMS gặp sự cố
• Các thao tác có thể làm cho trạng thái CSDL không chính xác
Đọc số dư của tài khoản A Kiểm tra (số dư > số tiền cần rút) Tăng số dư của tài khoản B
Tài khoản A Tài khoản B
Sự cố Ngân hàng chịu lỗ 1
Trang 22 Định nghĩa giao tác
• Giao tác là 1 đơn vị xử lý nguyên tố gồm 1 chuỗi các hành động
tương tác lên CSDL Khi thực hiện một giao tác hoặc phải thực
hiện tất cả các hành động của nó hoặc thì không thực hiện
hành động nào hết.
2 Định nghĩa giao tác (tt)
3 Tính chất ACID của giao tác
3.1 Tính Nguyên tố ( Atomicity)
3.2 Tính Nhất quán ( C onsistency)
3.3 Tính Cô lập ( I solation)
3.4 Tính Bền vững ( D urability)
3.1 Tính Nguyên tố ( A tomicity)
• Tính Nguyên tố ( A tomicity)
• Hoặc là toàn bộ hoạt động của giao dịch được phản ánh đúng đắn trong CSDL hoặc không có hoạt động nào cả
• 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à một câu lệnh đơn Không chia nhỏ ra được
Trang 33.1 Tính Nguyên tố ( A tomicity) (tt)
• A=100, B=200 (A+B=300)
• Tại thời điểm sau khi write(A,t)
• A=50, B=200 (A+B=250) - CSDL không nhất quán
• Tại thời điểm sau khi write(B,t)
• A=50, B=250 (A+B=300) - CSDL nhất quán
• 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
thì trạng thái không nhất quán sẽ không xuất hiện
T:Read(A,t);
t:=t-50;
Write(A,t);
Read(B,t);
t:=t+50;
Write(B,t);
3.2 Tính Nhất quán ( C onsistency)
• Tính Nhất quán ( C onsistency)
• 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 điểm mà mọi RBTV được thỏa gọi là tính nhất quán
• 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 nhất quán khác không được phá vở trạng thái nhất quán E1 T E2 (E1nhất quán thì E2 phải nhất quán)
• Ví dụ: phái là nam hoặc nữ, nhưng gõ đến phái Enter đi qua
mà cho phép thì không còn trạng thái nhất quán.
3.2 Tính Nhất quán ( C onsistency)
• Consistency
• Tổng A+B là không đổi
T: Read(A,t);
t:=t-50;
Write(A,t);
Read(B,t);
t:=t+50;
Write(B,t);
3.3 Tính Cô lập ( I solation)
• Tính Cô lập ( I solation)
• 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 nó
• Khi có n giao tác xử lý đồng thời phải làm sao bảo đảm là tôi có tính độc lập của riêng tôi.
Trang 43.3 Tính Cô lập ( I solation)
• 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
thực hiện của T
• T’ kết thúc: A+B=50+200=250
• T kết thúc: A+B=50+250=300
• 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
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
đó
T:Read(A,t);
t:=t-50;
Write(A,t);
Read(B,t);
t:=t+50;
Write(B,t);
T’
3.4 Tính Bền vững ( D urability)
• Tính Bền vững ( D urability)
• Mọi thay đổi mà giao tác thực hiện trên CSDL phải được ghi nhận bền vững
• Khi T kết thúc thành công
• Dữ liệu sẽ không thể nào bị mất bất chấp có sự cố hệ thống xảy ra
T:Read(A,t);
t:=t-50;
Write(A,t);
Read(B,t);
t:=t+50;
Write(B,t);
3.4 Tính Bền vững ( D urability) (tt)
• Tính bền vững đảm bảo rằng một khi giao dịch được
hoàn thành, tất cả các cập nhật trên CSDL là bền vững
thậm chí nếu có lỗi hệ thống sau khi giao dịch hoàn
thành thực hiện Giả sử một lỗi hệ thống có thể dẫn đến
mất mát dữ liệu trong bộ nhớ chính, nhưng dữ liệu
được ghi vào đĩa không bao giờ bị mất.
4 Trạng thái của giao tác
Trang 55 Khai báo giao tác trong SQL Server
• Giao tác SQL được định nghĩa dựa trên các câu lệnh xử lý giao tác
sau :
• BEGIN TRANSACTION:Bắt đầu một giao tác
• SAVE TRANSACTION:Đánh dấu một vị trí trong giao tác (gọi là điểm đánh
dấu)
• ROLLBACK TRANSACTION: Quay luitrở lại đầu giao tác hoặc một điểm
đánh dấu trước đó trong giao tác
• COMMIT TRANSACTION:Đánh dấu điểm kết thúc một giao tác Khi câu
lệnh này thực thi cũng có nghĩa là giao tác đã thực hiện thành công
• ROLLBACK [WORK]:Quay luitrở lại đầu giao tác
• COMMIT [WORK]:Đánh dấu kết thúc giao tác
5 Khai báo giao tác trong SQL Server (tt)
•Cú Pháp:
BEGIN TRANSACTION SQL Statements COMMIT | ROLLBACK TRANSACTION
BEGIN TRANSACTION giaotac1 UPDATE monhoc SET sodvht=4 WHERE sodvht=3 UPDATE diemthi SET diemlan2=0 WHERE diemlan2 IS NULL
ROLLBACK TRANSACTION giaotac1 BEGIN TRANSACTION giaotac2 UPDATE monhoc SET sodvht=4 WHERE sodvht=3 UPDATE diemthi SET diemlan2=0 WHERE diemlan2 IS NULL COMMIT TRANSACTION giaotac2
5 Khai báo giao tác trong SQL Server (tt) 5 Khai báo giao tác trong SQL Server (tt)
Trang 65 Khai báo giao tác trong SQL Server (tt)
6 Lịch biểu
6.1 Giới thiệu 6.2 Khái niệm 6.3 Lịch thao tác (Schedule) 6.4 Lịch tuần tự
6.5 Lịch khả tuần tự 6.6 Kiểm tra tính khả tuần tự của một lịch
6.1 Giới thiệu
• Thực hiện tuần tự
•Tại một thời điểm, một giao tác chỉ có thể bắt đầu khi giao tác trước nó hoàn tất
• Thực hiện đồng thời
•Cho phép nhiều giao tác cùng truy xuất dữ liệu
•Gây ra nhiều phức tạp về nhất quán dữ liệu
•Trong khi 1 giao tác đang thực hiện đọc/ghi trên đĩa, 1 giao tác khác đang xử lý tính toán
trên CPU
•Giảm thời gian chờ
•Các giao tác ngắn phải chờ đợi các giao tác dài
•Chia sẻ chu kỳ CPU và truy cập đĩa để làm giảm sự trì hoãn trong khi các giao tác thực thi
6.2 Khái niệm
• Khi thực hiện các giao dịch đồng thời có thể gây ra tình trạng khóa sống (live lock), khóa gài và vấn đề bất khả tuần tự Để loại bỏ vấn đề này, có 2 công cụ:
• Bộ xếp lịch (schedule)
• Nghi thức (protocol)
Trang 76.2 Khái niệm (tt)
• Bộ xếp lịch (schedule) là thành phần của hệ thống CSDL, có vai trò
làm trọng tài phân xử các yêu cầu đang có xung đột Người thiết
kế hệ thống đã biết cách loại bỏ khóa sống của một bộ xếp lịch
FIFO Một bộ xếp lịch có thể xử lý các khóa gài và tính bất khả
tuần tự bằng cách:
• Buộc 1 giao dịch phải đợi, chẳng hạn cho đến khi khóa đang được yêu cầu được
giải phóng
• Buộc một giao dịch ngừng lại và tái khởi động
6.2 Khái niệm (tt)
Bộ xếp lịch
6.2 Khái niệm (tt)
phải tuân theo Chẳng hạn, chiến lược tránh khoá gài bằng
cách yêu cầu khoá chốt trên các mục dữ liệu theo một thứ tự
cố định nào đó chính là một nghi thức.
6.3 Lịch thao tác (Schedule)
• Một lịch thao tác S được lập từ n giao tác T1, T2, …, Tnđược xử lý đồng
thời là 1 thứ tự thực hiện các hành động của n giao tác này
• Thứ tự xuất hiện của các thao tác trong lịch phải giống với thứ tự xuất hiện trong giao tác
• Gồm có