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,...
8/25/2017 Nội dung Chương Quản lý giao tác GV: Lê Thị Minh Nguyện Email: nguyenltm@huflit.edu.vn Giới thiệu Định nghĩa giao tác Tính chất ACID giao tác Trạng thái giao tác Khai báo giao tác SQL Server Lịch biểu Hệ quản trị Cơ sở liệu Giới thiệu Giới thiệu (tt) • Ví dụ • Khi DBMS gặp cố • Hệ thống giao dịch ngân hàng • Hệ thống đặt vé bay • Các thao tác làm cho trạng thái CSDL khơng xác • DBMS mơi trường đa người dùng • Nhiều thao tác truy xuất lên đơn vị liệu • Nhiều thao tác thi hành đồng thời Khách hàng Tìm thấy chỗ trống Đặt vé bay Tài khoản B Đọc số dư tài khoản A Khách hàng Tìm thấy chỗ trống Thời gian Tài khoản A Kiểm tra (số dư > số tiền cần rút) khách hàng đặt chỗ trống ??? Tăng số dư tài khoản B Sự cố Giảm số dư tài khoản A Ngân hàng chịu lỗ khoảng tiền ??? Đặt vé bay Nguyên tố Cơ chế Hệ quản trị Cơ sở liệu Hệ quản trị Cơ sở liệu 8/25/2017 Định nghĩa giao tác Định nghĩa giao tác (tt) • Giao tác đơn vị xử lý nguyên tố gồm chuỗi hành động tương tác lên CSDL Khi thực giao tác phải thực tất hành động khơng thực hành động hết CSDL quán Giao tác Hệ quản trị Cơ sở liệu CSDL quán Hệ quản trị Cơ sở liệu Tính chất ACID giao tác 3.1 Tính Nguyên tố (Atomicity) 3.1 Tính Nguyên tố (Atomicity) • Tính Ngun tố (Atomicity) • Hoặc tồn hoạt động giao dịch phản ánh đắn 3.2 Tính Nhất qn (Consistency) CSDL khơng có hoạt động 3.3 Tính Cơ lập (Isolation) • Nói cách khác, tác dụng câu lệnh giao tác phải câu lệnh đơn Khơng chia nhỏ 3.4 Tính Bền vững (Durability) Hệ quản trị Cơ sở liệu Hệ quản trị Cơ sở liệu 8/25/2017 3.2 Tính Nhất quán (Consistency) 3.1 Tính Nguyên tố (Atomicity) (tt) T:Read(A,t); t:=t-50; Write(A,t); Read(B,t); t:=t+50; Write(B,t); • A=100, B=200 (A+B=300) • Tính Nhất qn (Consistency) • Bất kỳ CSDL ràng buộc tịan vẹn phải thỏa Tại thời điểm mà RBTV thỏa gọi tính qn • Một giao tác phải biến CSDL từ trạng thái quán sang trạng thái quán khác không phá trạng thái quán E1 T E2 • Tại thời điểm sau write(A,t) (E1nhất qn E2 phải qn) • A=50, B=200 (A+B=250) - CSDL khơng qn • Tại thời điểm sau write(B,t) • Ví dụ: phái nam nữ, gõ đến phái Enter qua • A=50, B=250 (A+B=300) - CSDL quán mà cho phép khơng cịn trạng thái qn • Nếu T không bắt đầu thực T đảm bảo phải hồn tất trạng thái khơng quán không xuất Hệ quản trị Cơ sở liệu 3.2 Tính Nhất quán (Consistency) Hệ quản trị Cơ sở liệu 10 3.3 Tính Cơ lập (Isolation) T: Read(A,t); t:=t-50; Write(A,t); Read(B,t); t:=t+50; Write(B,t); • Tính Cơ lập (Isolation) • Một giao tác khơng quan tâm đến giao tác khác xử lý đồng thời với • Khi có n giao tác xử lý đồng thời phải bảo đảm tơi có • Consistency tính độc lập riêng tơi • Tổng A+B khơng đổi • Nếu CSDL qn trước T thực sau T hồn tất CSDL quán Hệ quản trị Cơ sở liệu 11 Hệ quản trị Cơ sở liệu 12 8/25/2017 3.3 Tính Cơ lập (Isolation) T’ 3.4 Tính Bền vững (Durability) • Tính Bền vững (Durability) T:Read(A,t); t:=t-50; Write(A,t); Read(B,t); t:=t+50; Write(B,t); • Mọi thay đổi mà giao tác thực CSDL phải ghi nhận bền vững • Giả sử có giao tác T’ thực phép toán A+B chen vào thời gian thực T • T’ kết thúc: A+B=50+200=250 • T kết thúc: A+B=50+250=300 • Hệ thống giao tác thực đồng thời có trạng thái tương đương với trạng thái hệ thống giao tác thực theo thứ tự Hệ quản trị Cơ sở liệu 13 T:Read(A,t); t:=t-50; Write(A,t); Read(B,t); t:=t+50; Write(B,t); • Khi T kết thúc thành cơng • Dữ liệu khơng thể bị bất chấp có cố hệ thống xảy Hệ quản trị Cơ sở liệu 14 Trạng thái giao tác 3.4 Tính Bền vững (Durability) (tt) • Tính bền vững đảm bảo giao dịch hoàn thành, tất cập nhật CSDL bền vững chí có lỗi hệ thống sau giao dịch hoàn thành thực Giả sử lỗi hệ thống dẫn đến mát liệu nhớ chính, liệu ghi vào đĩa không bị Hệ quản trị Cơ sở liệu 15 Hệ quản trị Cơ sở liệu 16 8/25/2017 Khai báo giao tác SQL Server Khai báo giao tác SQL Server (tt) • Giao tác SQL định nghĩa dựa câu lệnh xử lý giao tác sau : • BEGIN TRANSACTION: Bắt đầu giao tác • SAVE TRANSACTION: Đánh dấu vị trí giao tác (gọi điểm đánh dấu) • ROLLBACK TRANSACTION: Quay lui trở lại đầu giao tác điểm đánh dấu trước giao tác • COMMIT TRANSACTION: Đánh dấu điểm kết thúc giao tác Khi câu lệnh thực thi có nghĩa giao tác thực thành cơng • ROLLBACK [WORK]: Quay lui trở lại đầu giao tác • COMMIT [WORK]: Đánh dấu kết thúc giao tác Hệ quản trị Cơ sở liệu 17 Khai báo giao tác SQL Server (tt) Hệ quản trị Cơ sở liệu • 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 Hệ quản trị Cơ sở liệu 18 Khai báo giao tác SQL Server (tt) 19 Hệ quản trị Cơ sở liệu 20 8/25/2017 Khai báo giao tác SQL Server (tt) 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 6.5 Lịch khả 6.6 Kiểm tra tính khả lịch Hệ quản trị Cơ sở liệu 21 6.1 Giới thiệu Hệ quản trị Cơ sở liệu 22 6.2 Khái niệm • Thực • Tại thời điểm, giao tác bắt đầu giao tác trước hồn tất • Thực đồng thời • Khi thực giao dịch đồng thời gây tình trạng khóa sống (live lock), khóa gài vấn đề bất khả • Cho phép nhiều giao tác truy xuất liệu • Gây nhiều phức tạp quán liệu • Tuy nhiên • Tận dụng tài nguyên thông lượng (throughput) Để loại bỏ vấn đề này, có cơng cụ: • Bộ xếp lịch (schedule) • Trong giao tác thực đọc/ghi đĩa, giao tác khác xử lý tính tốn CPU • Giảm thời gian chờ • Nghi thức (protocol) • Các giao tác ngắn phải chờ đợi giao tác dài • Chia sẻ chu kỳ CPU truy cập đĩa để làm giảm trì hỗn giao tác thực thi Hệ quản trị Cơ sở liệu 23 Hệ quản trị Cơ sở liệu 24 8/25/2017 6.2 Khái niệm (tt) 6.2 Khái niệm (tt) • Bộ xếp lịch (schedule) thành phần hệ thống CSDL, có vai trị Bộ xếp lịch làm trọng tài phân xử yêu cầu có xung đột Người thiết kế hệ thống biết cách loại bỏ khóa sống xếp lịch FIFO Một xếp lịch xử lý khóa gài tính bất khả cách: • Buộc giao dịch phải đợi, chẳng hạn khóa u cầu giải phóng • Buộc giao dịch ngừng lại tái khởi động Hệ quản trị Cơ sở liệu 25 6.2 Khái niệm (tt) Hệ quản trị Cơ sở liệu 26 6.3 Lịch thao tác (Schedule) • Nghi thức (protocal): quy định mà giao dịch phải tuân theo Chẳng hạn, chiến lược tránh khoá gài cách yêu cầu khoá chốt mục liệu theo thứ tự • Một lịch thao tác S lập từ n giao tác T1, T2, …, Tn xử lý đồng thời thứ tự thực hành động n giao tác • Thứ tự xuất thao tác lịch phải giống với thứ tự xuất giao tác cố định nghi thức • Gồm có • Lịch (Serial) • Lịch khả (Serializable) Hệ quản trị Cơ sở liệu 27 Hệ quản trị Cơ sở liệu 28 8/25/2017 6.3 Lịch thao tác (Schedule)(tt) T1 6.4 Lịch (Serial schedule) • Một lịch S gọi hành động giao tác Ti (i=1 n) thực liên tiếp T2 Read(A,t) t:=t+100 Write(A,t) Read(B,t) t:=t+100 Write(B,t) Read(A,s) s:=s*2 Write(A,s) Read(B,s) s:=s*2 Write(B,s) S T1 T2 T3 • Giả sử ràng buộc quán CSDL A=B • Từng giao tác thực riêng lẽ tính qn bảo tồn Hệ quản trị Cơ sở liệu … Thời gian Tn 29 6.4 Lịch (Serial schedule) (tt) S1 T1 Read(A,t) t:=t+100 Write(A,t) Read(B,t) t:=t+100 Write(B,t) T2 A 25 B 25 S2 T1 125 125 Read(A,s) s:=s*2 Write(A,s) 250 Read(B,s) s:=s*2 Write(B,s) 250 Read(A,t) t:=t+100 Write(A,t) Read(B,t) t:=t+100 Write(B,t) Hệ quản trị Cơ sở liệu T2 Hệ quản trị Cơ sở liệu 30 6.4 Lịch (Serial schedule) (tt) A 25 B 25 Read(A,s) s:=s*2 Write(A,s) 50 Read(B,s) s:=s*2 Write(B,s) 50 Ví dụ: xét hệ thống ngân hang có số tài khoản tập giao dịch có thểt ruy xuất hay cập nhật tài khoản Đặt T1 T2 giao dịch chuyển tiền từ tài khoản đến tài khoản khác Giao dịch T1 chuyển 50USD từ tài khoản A đến tài khoản B định nghĩa sau: 150 150 31 Hệ quản trị Cơ sở liệu 32 8/25/2017 6.4 Lịch (Serial schedule) (tt) 6.4 Lịch (Serial schedule) (tt) Giao dịch T2 chuyển 10% số dư từ tài khoản A đến tài khoản B định nghĩa sau: Hệ quản trị Cơ sở liệu Giả sử giao dịch thời tài khoản A B tương ứng 1.000USD 2.000USD Giả sử giao dịch thực theo thứ tự T1 đến T2 33 6.4 Lịch (Serial schedule) (tt) Hệ quản trị Cơ sở liệu 34 6.5 Lịch khả • Một lịch S lập từ n giao tác T1, T2, …, Tn xử lý đồng thời gọi khả cho kết với lịch lập từ n giao tác S T1 T2 T3 Thời gian Tn Hệ quản trị Cơ sở liệu 35 Hệ quản trị Cơ sở liệu 36 8/25/2017 6.5 Lịch khả (tt) S3 T1 T2 A 25 Read(A,t) t:=t+100 Write(A,t) B 25 125 Read(A,s) s:=s*2 Write(A,s) Read(B,t) t:=t+100 Write(B,t) 250 125 Read(B,s) s:=s*2 Write(B,s) 250 Hệ quản trị Cơ sở liệu 6.5 Lịch khả (tt) • Trước S3 thực • A=B=c • với c số • Sau S3 kết thúc • A=2*(c+100) • B=2*(c+100) • Trạng thái CSDL quán • S3 khả T1 T2 Read(A,t) t:=t+100 Write(A,t) B 25 125 Read(A,s) s:=s*1 Write(A,s) Read(B,s) s:=s*1 Write(B,s) Read(B,t) t:=t+100 Write(B,t) A 25 125 25 T1 T2 Read(A,t) t:=t+100 Write(A,t) Read(B,t) t:=t+100 Write(B,t) A 25 B 25 125 Read(A,s) s:=s*2 Write(A,s) Read(B,s) s:=s*2 Write(B,s) 37 6.5 Lịch khả (tt) S5 S4 250 50 150 Hệ quản trị Cơ sở liệu • Trước S4 thực • A=B=c • với c số • Sau S4 kết thúc • A = 2*(c+100) • B = 2*c + 100 • Trạng thái CSDL khơng qn • S4 khơng khả 38 6.5 Lịch khả (tt) • Khi S5 kết thúc • A B • Trạng thái cuối quán • S5 khả tuần tự, có kết giống với lịch • T1 , T • T2 , T • Lịch khả 125 Hệ quản trị Cơ sở liệu 39 Hệ quản trị Cơ sở liệu 40 10 8/25/2017 6.5 Lịch khả (tt) 6.5 Lịch khả (tt) • Bài tập • Lịch khả tuần tự? Nếu khả tương đương với lịch nào? • Cho A=10; B=20; N=30; M=40 Hệ quản trị Cơ sở liệu 41 6.6 Kiểm tra tính khả lịch 42 6.6 Kiểm tra tính khả lịch(tt) • Nhập: Lịch biểu S cho tập giao tác T1,T2, …, Tk • Xuất: Khẳng định S có hay khơng? • Nếu có đưa lịch biểu tương đương với S • Phương pháp: Tạo đồ thị có hướng G (Precedence graph) Hệ quản trị Cơ sở liệu Hệ quản trị Cơ sở liệu 43 • Xây dựng đồ thị có hướng: • Mỗi giao tác Ti nút đồ thị G • Nếu có Tj phát yêu cầu Write(A) sau giao tác Ti phát yêu cầu Read(A) vẽ cung từ Ti Tj • Nếu có giá trị Tj phát yêu cầu Read(A) sau giao tác Ti phát sau yêu cầu Write(A) vẽ cung từ Ti Tj • Nếu có yêu cầu Tj phát yêu cầu Write(A) sau yêu cầu Ti phát u cầu Write(A) vẽ cung Ti Tj • Nếu G có chu trình S khơng khả Hệ quản trị Cơ sở liệu 44 11 8/25/2017 6.6 Kiểm tra tính khả lịch(tt) S T1 T2 6.6 Kiểm tra tính khả lịch(tt) • T2 S T3 T3 S Read(A) Read(B) Write(A) T S T Write(B) Write(A) P(S) khơng có chu trình S serializable theo thứ tự T1, T2, T3 Hệ quản trị Cơ sở liệu Lịch có khả khơng? 45 6.6 Kiểm tra tính khả lịch(tt) T3 Hệ quản trị Cơ sở liệu Bài tập Read(A) S Read(B) Write(A) Read(B) T S T Read(A) T2 T3 T4 Read(A) Read(A) Write(A) Write(A) Write(B) T1 Write(A) Write(B) 46 6.6 Kiểm tra tính khả lịch(tt) • T2 S T3 T2 Read(A) Write(B) Write(B) T1 T3 Read(A) Write(A) Read(B) Read(A) Read(B) S T2 Read(B) Write(A) Write(B) T1 T S T 2 • Vẽ P(S) • S có conflict-serializable khơng? P(S) có chu trình Hệ quản trị Cơ sở liệu 47 Hệ quản trị Cơ sở liệu 48 12 8/25/2017 6.6 Kiểm tra tính khả lịch(tt) 6.6 Kiểm tra tính khả lịch(tt) Bài tập Bài tập S S T1 T2 T3 T1 T2 T4 T3 T4 Write(A) Write(C) Write(A) Read(A) Read(A) Write(B) Read(C) Read(A) Write(A) Write(A) Read(A) Write(D) • Vẽ P(S) • S có serializable khơng? • Vẽ P(S) • S có serializable khơng? Hệ quản trị Cơ sở liệu 49 Hệ quản trị Cơ sở liệu 51 Hệ quản trị Cơ sở liệu 50 13 ... conflict-serializable khơng? P(S) có chu trình Hệ quản trị Cơ sở liệu 47 Hệ quản trị Cơ sở liệu 48 12 8/25/2017 6.6 Kiểm tra tính khả lịch(tt) 6.6 Kiểm tra tính khả lịch(tt) Bài tập Bài tập S... với S • Phương pháp: Tạo đồ thị có hướng G (Precedence graph) Hệ quản trị Cơ sở liệu Hệ quản trị Cơ sở liệu 43 • Xây dựng đồ thị có hướng: • Mỗi giao tác Ti nút đồ thị G • Nếu có Tj phát yêu cầu... có serializable khơng? • Vẽ P(S) • S có serializable khơng? Hệ quản trị Cơ sở liệu 49 Hệ quản trị Cơ sở liệu 51 Hệ quản trị Cơ sở liệu 50 13