Bài giảng Cơ sở dữ liệu - Chương 4: Quản lý giao tác - Lê Thị Minh Nguyện
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
Bạn đang xem tài liệu "Bài giảng Cơ sở dữ liệu - Chương 4: Quản lý giao tác - Lê Thị Minh Nguyện", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Cơ sở dữ liệu - Chương 4: Quản lý giao tác - Lê Thị Minh Nguyện
8/25/2017 1 Chươ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 Hệ quản trị Cơ sở dữ liệu 2 1. Giới thiệu Hệ quản trị Cơ sở dữ liệu 3 • 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 Thời gian 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 Đặt vé bay Đặt vé bay 2 khách hàng đặt cùng 1 chỗ trống ??? Cơ chế tuần tự 1. Giới thiệu (tt) Hệ quản trị Cơ sở dữ liệu 4 • 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 Giảm số dư của tài khoản A Tài khoản A Tài khoản B Sự cố Ngân hàng chịu lỗ 1 khoảng tiền ??? Nguyên tố 8/25/2017 2 2. Định nghĩa giao tác Hệ quản trị Cơ sở dữ liệu 5 • 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. CSDL nhất quán 1 CSDL nhất quán 2Giao tác 2. Định nghĩa giao tác (tt) Hệ quản trị Cơ sở dữ liệu 6 3. Tính chất ACID của giao tác Hệ quản trị Cơ sở dữ liệu 7 3.1. Tính Nguyên tố (Atomicity) 3.2. Tính Nhất quán (Consistency) 3.3. Tính Cô lập (Isolation) 3.4. Tính Bền vững (Durability) 3.1. Tính Nguyên tố (Atomicity) Hệ quản trị Cơ sở dữ liệu 8 • Tính Nguyên tố (Atomicity) • 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. 8/25/2017 3 3.1. Tính Nguyên tố (Atomicity) (tt) Hệ quản trị Cơ sở dữ liệu 9 • 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 (Consistency) Hệ quản trị Cơ sở dữ liệu 10 • Tính Nhất quán (Consistency) • 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 (Consistency) Hệ quản trị Cơ sở dữ liệu 11 • Consistency • Tổng A+B là không đổi • Nếu CSDL nhất quán trước khi T được thực hiện thì sau khi T hoàn tất CSDL vẫn còn nhất quán 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 (Isolation) Hệ quản trị Cơ sở dữ liệu 12 • Tính Cô lập (Isolation) • 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. 8/25/2017 4 3.3. Tính Cô lập (Isolation) Hệ quản trị Cơ sở dữ liệu 13 • 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 (Durability) Hệ quản trị Cơ sở dữ liệu 14 • Tính Bền vững (Durability) • 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 (Durability) (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. Hệ quản trị Cơ sở dữ liệu 15 4. Trạng thái của giao tác Hệ quản trị Cơ sở dữ liệu 16 8/25/2017 5 5. Khai báo giao tác trong SQL Server Hệ quản trị Cơ sở dữ liệu 17 • 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 lui trở 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 lui trở 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) Hệ quản trị Cơ sở dữ liệu 18 • 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) Hệ quản trị Cơ sở dữ liệu 19 5. Khai báo giao tác trong SQL Server (tt) Hệ quản trị Cơ sở dữ liệu 20 8/25/2017 6 5. Khai báo giao tác trong SQL Server (tt) Hệ quản trị Cơ sở dữ liệu 21 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 Hệ quản trị Cơ sở dữ liệu 22 6.1. Giới thiệu Hệ quản trị Cơ sở dữ liệu 23 • 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 • Tuy nhiên • Tận dụng tài nguyên và thông lượng (throughput) • 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) Hệ quản trị Cơ sở dữ liệu 24 8/25/2017 7 6.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 Hệ quản trị Cơ sở dữ liệu 25 6.2. Khái niệm (tt) Hệ quản trị Cơ sở dữ liệu 26 Bộ xếp lịch 6.2. Khái niệm (tt) • Nghi thức (protocal): là những quy định mà các giao dịch 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. Hệ quản trị Cơ sở dữ liệu 27 6.3. Lịch thao tác (Schedule) Hệ quản trị Cơ sở dữ liệu 28 • 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ó • Lịch tuần tự (Serial) • Lịch khả tuần tự (Serializable) 8/25/2017 8 6.3. Lịch thao tác (Schedule)(tt) Hệ quản trị Cơ sở dữ liệu 29 T2T1 Read(A,s) s:=s*2 t:=t+100 Read(A,t) t:=t+100 Write(A,t) Read(B,t) Write(B,t) s:=s*2 Write(A,s) Read(B,s) Write(B,s) • Giả sử ràng buộc nhất quán trên CSDL là A=B • Từng giao tác thực hiện riêng lẽ thì tính nhất quán sẽ được bảo toàn 6.4. Lịch tuần tự (Serial schedule) Hệ quản trị Cơ sở dữ liệu 30 • Một lịch S được gọi là tuần tự nếu các hành động của các giao tác Ti (i=1..n) được thực hiện liên tiếp nhau T1 T2 Tn Thời gian S T3 6.4. Lịch tuần tự (Serial schedule) (tt) Hệ quản trị Cơ sở dữ liệu 31 T2T1 Read(A,s) s:=s*2 t:=t+100 Read(A,t) t:=t+100 Write(A,t) Read(B,t) Write(B,t) s:=s*2 Write(A,s) Read(B,s) Write(B,s) A B 25 25 125 125 250 250 S1 T2T1 Read(A,s) s:=s*2 t:=t+100 Read(A,t) t:=t+100 Write(A,t) Read(B,t) Write(B,t) s:=s*2 Write(A,s) Read(B,s) Write(B,s) A B 25 25 50 50 150 150 S2 6.4. Lịch tuần tự (Serial schedule) (tt) Hệ quản trị Cơ sở dữ liệu 32 Ví dụ: xét hệ thống ngân hang có một số tài khoản và một tập các giao dịch có thểt ruy xuất hay cập nhật các tài khoản này. Đặt T1 và T2 là 2 giao dịch chuyển tiền từ một tài khoản này đến một 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 và được định nghĩa như sau: 8/25/2017 9 6.4. Lịch tuần tự (Serial schedule) (tt) Hệ quản trị Cơ sở dữ liệu 33 Giao dịch T2 chuyển 10% số dư từ tài khoản A đến tài khoản B được định nghĩa như sau: 6.4. Lịch tuần tự (Serial schedule) (tt) Hệ quản trị Cơ sở dữ liệu 34 Giả sử các giao dịch hiện thời của các tài khoản A và B tương ứng là 1.000USD và 2.000USD. Giả sử 2 giao dịch được thực hiện tuần tự theo thứ tự T1 rồi đến T2 6.4. Lịch tuần tự (Serial schedule) (tt) Hệ quản trị Cơ sở dữ liệu 35 6.5. Lịch khả tuần tự Hệ quản trị Cơ sở dữ liệu 36 • Một lịch S được lập từ n giao tác T1, T2, , Tn xử lý đồng thời được gọi là khả tuần tự nếu nó cho cùng kết quả với 1 lịch tuần tự nào đó được lập từ n giao tác này Tn T1 T2 T3 Thời gian S 8/25/2017 10 6.5. Lịch khả tuần tự (tt) Hệ quản trị Cơ sở dữ liệu 37 • Trước S3 khi thực hiện • A=B=c • với c là hằng số • Sau khi S3 kết thúc • A=2*(c+100) • B=2*(c+100) • Trạng thái CSDL nhất quán • S3 là khả tuần tự T2T1 Read(A,s) s:=s*2 t:=t+100 Read(A,t) t:=t+100 Write(A,t) Read(B,t) Write(B,t) s:=s*2 Write(A,s) Read(B,s) Write(B,s) A B 25 25 125 125 250 250 S3 6.5. Lịch khả tuần tự (tt) Hệ quản trị Cơ sở dữ liệu 38 • Trước S4 khi thực hiện • A=B=c • với c là hằng số • Sau khi S4 kết thúc • A = 2*(c+100) • B = 2*c + 100 • Trạng thái CSDL không nhất quán • S4 không khả tuần tự T2T1 Read(A,s) s:=s*2 t:=t+100 Read(A,t) t:=t+100 Write(A,t) Read(B,t) Write(B,t) s:=s*2 Write(A,s) Read(B,s) Write(B,s) A B 25 25 125 50 250 150 S4 6.5. Lịch khả tuần tự (tt) Hệ quản trị Cơ sở dữ liệu 39 • Khi S5 kết thúc • A và B bằng nhau • Trạng thái cuối cùng nhất quán • S5 khả tuần tự, có kết quả giống với lịch tuần tự • T1, T2 • T2, T1 T2T1 Read(A,s) s:=s*1 t:=t+100 Read(A,t) t:=t+100 Write(A,t) Read(B,t) Write(B,t) s:=s*1 Write(A,s) Read(B,s) Write(B,s) A B 25 25 125 25 125 125 S5 6.5. Lịch khả tuần tự (tt) Hệ quản trị Cơ sở dữ liệu 40 • Lịch nào khả tuần tự 8/25/2017 11 6.5. Lịch khả tuần tự (tt) Hệ quản trị Cơ sở dữ liệu 41 • Bài tập • Cho A=10; B=20; N=30; M=40 6.5. Lịch khả tuần tự (tt) Hệ quản trị Cơ sở dữ liệu 42 • Lịch nào là khả tuần tự? Nếu khả tuần tự thì tương đương với lịch tuần tự nào? 6.6. Kiểm tra tính khả tuần tự của một lịch Hệ quản trị Cơ sở dữ liệu • Nhập: Lịch biểu S cho một tập giao tác T1,T2, , Tk • Xuất: Khẳng định S có tuần tự hay không? • Nếu có thì đưa ra một lịch biểu tuần tự tương đương với S • Phương pháp: Tạo một đồ thị có hướng G (Precedence graph) 43 6.6. Kiểm tra tính khả tuần tự của một lịch(tt) Hệ quản trị Cơ sở dữ liệu 44 • Xây dựng đồ thị có hướng: • Mỗi giao tác Ti là một nút của đồ thị G. • Nếu có Tj phát ra một yêu cầu Write(A) sau một giao tác Ti đã phát ra yêu cầu Read(A) thì vẽ một cung từ Ti Tj • Nếu có một giá trị Tj phát ra một yêu cầu Read(A) sau một giao tác Ti đã phát sau một yêu cầu Write(A) thì vẽ một cung đi từ Ti Tj • Nếu có một yêu cầu Tj phát ra một yêu cầu Write(A) sau một yêu cầu Ti đã phát ra một yêu cầu Write(A) thì vẽ cung Ti Tj • Nếu G có chu trình S không khả tuần tự 8/25/2017 12 6.6. Kiểm tra tính khả tuần tự của một lịch(tt) Hệ quản trị Cơ sở dữ liệu 45 T2T1 Read(A) Read(B) Write(A) Write(B) S T3 Read(A) Write(A) Read(B) Write(B) • T2 S T3 2 3 T1 S T2 1 2 1 2 3 P(S) không có chu trình S serializable theo thứ tự T1, T2, T3 6.6. Kiểm tra tính khả tuần tự của một lịch(tt) Hệ quản trị Cơ sở dữ liệu 46 T2T1 Read(A) Read(B) Write(A) Write(B) S T3 Read(A) Write(A) Read(B) Write(B) Lịch có khả tuần tự không? 6.6. Kiểm tra tính khả tuần tự của một lịch(tt) Hệ quản trị Cơ sở dữ liệu 47 T2T1 Read(A) Read(B) Write(A) Write(B) S T3 Read(A) Write(A) Read(B) Write(B) P(S) có chu trình • T2 S T3 2 3 T2 S T1 2 1 T1 S T2 1 2 1 2 3 6.6. Kiểm tra tính khả tuần tự của một lịch(tt) Hệ quản trị Cơ sở dữ liệu 48 T2T1 Read(A) Write(A) S T4 Read(A) Write(A) T3 • Vẽ P(S) • S có conflict-serializable không? Bài tập 1 8/25/2017 13 6.6. Kiểm tra tính khả tuần tự của một lịch(tt) Hệ quản trị Cơ sở dữ liệu 49 T2T1 Read(A) Write(A) S T4 Read(A) Write(A) T3 • Vẽ P(S) • S có serializable không? Bài tập 2 6.6. Kiểm tra tính khả tuần tự của một lịch(tt) Hệ quản trị Cơ sở dữ liệu 50 • Vẽ P(S) • S có serializable không? T2T1 Read(A) Read(C) Write(A) Write(C) S T4 Read(A) Write(A) Write(D) Write(B) T3 Bài tập 3 Hệ quản trị Cơ sở dữ liệu 51
File đính kèm:
- giao_trinh_co_so_du_lieu_chuong_4_quan_ly_giao_tac_le_thi_mi.pdf