Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 140 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
140
Dung lượng
1,36 MB
Nội dung
Chương II. Quản lý truy xuất đồng thời 1 Nội dung Giới thiệu Khái niệm về giao tác Các vấn đề truy xuất đồng thời Lịch thao tác Các kỹ thuật khóa dữ liệu Kỹ thuật nhãn thời gian Các kỹ thuật khác 2 Giới thiệu Thực tế, CSDL được khai thác một cách đồng thời bởi nhiều người sử dụng. Thậm chí còn có nhiều tiến trình trong một chương trình cũng có thể được thực hiện đồng thời. Ví dụ: hệ thống đặt chỗ trên các chuyến bay của một hãng hàng không. Nhiều đại lý có thể cùng bán vé. Hành khách có thể mua vé, đổi vé, trả vé do đó danh sách khách hàng và số ghế của các chuyến bay sẽ bị thay đổi. Chuyện gì sẽ xảy ra nếu hai hay nhiều đại lý cùng bán một ghế cho nhiều khách hàng? Hệ quản trị CSDL này phải có khả năng giải quyết vấn đề tranh chấp đó để không một ghế nào trên một chuyến bay có thể bán nhiều hơn một lần. 3 Khái niệm về giao tác (Transaction) Định nghĩa Tính chất ACID của giao tác Các thao tác của giao tác Trạng thái của giao tác 4 Định nghĩa 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 2 Giao tác 5 Ví dụ 6 Tính chất ACID của giao tác 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. 7 Ví dụ 1 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); 8 Tình huống Đặt Ti là một giao dịch chuyển 50 USD từ tài khoản A đến tài khoản B. giao dịch này được định nghĩa như sau: Ti: Read(A); A:=A-50; Write(A); Read(B); B:=B+50; Write(B); 9 Giả sử trước khi thực hiện giao dịch Ti, các giá trị của các tài khoản A và B tương ứng là 1000USD và 2000USD. Trong khi thực hiện giao dịch Ti, một lỗi xảy ra (phần cứng, phần mềm,, mất điện,…) ngăn chặn Ti hoàn thành thực hiện giao dịch chuyển khoản. Giả sử lỗi này xảy ra sau khi thao tác Write(A) đã được thực hiện và trước khi thao tác Write(B) được thực hiện. Trong trường hợp này, giá trị cùa tài khoản A và B được ghi nhận trong CSDL là 950USD và 2000 USD. Hệ thống đã hủy 50USD do lỗi này tong A+B không còn được bảo toàn 10 Tình huống [...]... được thực hiện thì sau khi T hoàn tất CSDL vẫn còn nhất quán 12 Tính chất ACID của giao tác (tt) 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, mà tôi chạy giống như tôi chạy một mình, không biết xung quanh tôi có n người khác đang chạy Hệ thống làm sao bảo... thành công T-SQL đặc trưng của giao tác 24 Các vấn đề truy xuất đồng thời Vấn đề mất dữ liệu đã cập nhật (Lost Update) Vấn đề không thể đọc lại được(Unrepeated Read) Vấn đề dữ liệu chưa hoàn tất (Uncommitted Dependency ) 25 Vấn đề mất dữ liệu đã cập nhật Tình trạng xảy ra khi hai hay nhiều thao tác của các giao tác khác nhau cùng yêu cầu truy cập một mục dữ liệu Các dữ liệu đã được các thao tác... tốn thời gian của hệ quản trị cơ sở dữ liệu cần để ngăn ngừa dirty read và Mất tính song song gây ra từ sự chờ đợi cho đến khi không có thể có một dirty read 32 Các mức cô lập của Transaction Giả sử rằng có các dirty read Có 3 tài khoản A1, A2, A3 với 100$, 200$ và 300$ tương ứng Giả sử rằng giao tác T1 thực hiện chương trình P để chuyển 150$ từ A1 đến A2 Cùng một thời gian, giao tác T2 chạy chương. .. T’ T:Read(A,t); t:=t-50; Write(A,t); Read(B,t); t:=t+50; Write(B,t); 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 đó 14 Như ví dụ trên, khi CSDL... đều đồng ý bán Vào lúc T2 nhân viên A sẽ thực hiện cập nhật số sách từ 500 thành 100 Vào lúc T3 nhân viên B sẽ cập nhật số sách từ 500 thành 200 Như vậy thao tác cập nhật của A không có tác dụng hay dữ liệu của A cập nhật sẽ bị mất vì B cập nhật sau 27 Vấn đề mất dữ liệu đã cập nhật Xét 2 giao tác T1 Read(A) A:=A+10 Write(A) T2 Read(A) A:=A+20 Write(A) Giả sử T1 và T2 được thực hiện đồng thời. .. trên, khi CSDL ở trạng thái không toàn 15 vẹn trong giao dịch chuyển tiền từ A đến B đang thực hiện, ở đó tài khoản A đã giảm đi nhưng chưa tăng tài khoản B Nếu một giao dịch thứ hai chạy đồng thời đọc A và B tại thời điểm trung gian này và tính tổng A+B, nó sẽ quan sát thấy một giá trị không đúng đắn Hơn nữa, nếu giao dịch thứ hai thực hiện Việc cập nhật trên A và B và dựa vào những giá trị không... liệu trong bộ nhớ chính, nhưng dữ liệu được ghi vào đĩa không bao giờ bị mất 17 Các thao tác của giao tác Giả sử CSDL gồm nhiều đơn vị dữ liệu Một đơn vị dữ liệu (element) Có một giá trị Được truy xuất và sửa đổi bởi các giao tác Quan hệ (relation) - Lớp (class) Khối dữ liệu trên đĩa (block) / trang (page) Bộ (tuple) - Đối tượng (object) 18 Các thao tác của giao tác (tt) Input(X) Read(X,... A:=A+10 Write(A) T2 Read(A) A:=A+20 Write(A) Giả sử T1 và T2 được thực hiện đồng thời A=50 T1 t1 Read(A) Dữ liệu đã cập nhật tại t4 của T1 t2 A:=A+10 bị mất vì đã bị ghi chồng lên ở t3 Write(A) t4 thời điểm t6 t5 t6 28 A=60 T2 Read(A) A:=A+20 Write(A) A=70 Vấn đề không thể đọc lại được (Unrepeated Read) Ví dụ: giả sử nhà sách còn 200 cuốn sách Vào lúc T1 nhân viên A bán cho khách 150 cuốn, sẽ... thành chẳng hạn vì việc giao nhận tiền chưa xong) Sau đó lúc T2, B nhận được yêu cầu mua 100 cuốn sách, nếu B đọc được dữ liệu chưa hoàn tất thì B sẽ từ chối bán 100 cuốn sách này Nếu vào lúc T3 vì lý do nào đó chẳng hạn không đủ tiền khách hàng của A không mua 150 cuốn sách nữa Giao tác bán hàng của A sẽ không thực hiện nên quay về trạng thái số sách còn lại là 200 Nhưng B từ chối khách hàng ... cần tổng hợp 5 dòng dữ liệu 1 2 3 4 5 để làm một bản báo cáo T1: C đọc và đưa các dòng 1 2 3 4 vào báo cáo T2: D lại xóa dòng 1 thay bằng dòng 6 T3: C đọc tiếp 5 6 đưa vào báo cáo Vậy báo cáo này xử lý cả dữ liệu cũ và mới sai 30 Các mức cô lập của Transaction Các dữ liệu bẩn (dirty data) là một thuật ngữ chung chỉ các dữ liệu được ghi bằng một giao tác nhưng còn chưa được lưu giữ lại (committed) . Chương II. Quản lý truy xuất đồng thời 1 Nội dung Giới thiệu Khái niệm về giao tác Các vấn đề truy xuất đồng thời Lịch thao tác Các kỹ thuật khóa dữ liệu Kỹ thuật nhãn thời gian . 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, mà tôi. Thực tế, CSDL được khai thác một cách đồng thời bởi nhiều người sử dụng. Thậm chí còn có nhiều tiến trình trong một chương trình cũng có thể được thực hiện đồng thời. Ví dụ: hệ thống đặt chỗ trên