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

TÀI LIỆU HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Chia sẻ: Lê Trinh | Ngày: | Loại File: PDF | Số trang:11

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

Crash: Là các sự cố xảy ra không lường trước được, ví dụ như cúp điện, hư ổ cứng, RAM hoặc các thiết bị khác … Nói chung các sự cố này xảy ra làm cho việc thực hiện các transaction bị gián đoạn hoặc mất đi tình toàn vẹn dữ liệu. Như vậy có thể thấy có 2 trường hợp có thể xảy ra với 1 Transaction khi có sự cố:  Transaction chưa thực hiện commit (begin trans mà không có commit). Ở trường hợp này thì database  Transaction đã thực hiện commit nhưng vẫn chưa lưu dữ liệu...

Chủ đề:
Lưu

Nội dung Text: TÀI LIỆU HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

  1. HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Bài viết về: PHỤC HỒI SỰ CỐ.
  2. Nội dung: 1. Một vài giả định và quy ước: .................................................................................................... 3 1.1. Transaction: ......................................................................................................................... 3 1.2. Checkpoint: .......................................................................................................................... 3 1.3. Logging:................................................................................................................................ 3 2. Một vài khái niệm cơ bản: ........................................................................................................ 4 2.1. Crash: ................................................................................................................................... 4 2.2. Logging:................................................................................................................................ 4 2.3. Recovery: ............................................................................................................................. 4 2.4. Checkpoint và cơ chế Logging: .............................................................................................. 4 3. DBMS áp dụng cơ chế phục hồi như thế nào: ........................................................................... 7 3.1. Các kỹ thuật Recovery (3 kỹ thuật):....................................................................................... 7 3.1.1. Undo Logging (Sử dụng cho cơ chế phục hồi Immediate Update):..................................... 7 3.1.2. Undo Logging và Checkpoint:............................................................................................ 8 3.1.3. Redo Logging (Sử dụng cho cơ chế phục hồi Defer Update): ........................................... 10 3.1.4. Undo/ Redo Logging ....................................................................................................... 10 4. Bài tập:................................................................................................................................... 11
  3. 1. Một vài giả định và quy ước: 1.1. Transaction:  Bắt đầu transaction: < start T1 >  Hoàn tất transaction: < commit T1 >  Hủy bỏ 1 giao tác < abort T1 > 1.2. Checkpoint:  Tạo 1 checkpoint: 1.3. Logging:
  4. 2. Một vài khái niệm cơ bản: 2.1. Crash: Là các sự cố xảy ra không lường trước được, ví dụ như cúp điện, hư ổ cứng, RAM hoặc các thiết bị khác … Nói chung các sự cố này xảy ra làm cho việc thực hiện các transaction bị gián đoạn hoặc mất đi tình toàn vẹn dữ liệu. Như vậy có thể thấy có 2 trường hợp có thể xảy ra với 1 Transaction khi có sự cố:  Transaction chưa thực hiện commit (begin trans mà không có commit). Ở trường hợp này thì database  Transaction đã thực hiện commit nhưng vẫn chưa lưu dữ liệu từ bộ nhớ đệm xuống datafile (begin trans và commit). 2.2. Logging: Là cơ chế lưu vết lại tất cả các yêu cầu thay đổi từ phía User. Cần phải chú ý rằng đôi lúc việc kết quả truy vấn hay update cơ sở tưởng chừng như đã hoàn tất ở phía người dùng, tuy nhiên, trong 1 số trường hợp DBMS vẫn thực hiện vẫn chưa hoàn thành việc update (nói chính xác hơn là lưu trữ xuống datafile). Việc hiển thị kết quả chỉ là do DBMS thực hiện trên bộ nhớ đệm. 2.3. Recovery: Là phục hồi dữ liệu trên ổ cứng (datafile) về trạng thái đảm bảo tính toàn vẹn dữ liệu gần nhất. Có 2 cơ chế phục hồi:  Defer Update: kết quả thay đổi của dữ liệu chỉ được lưu từ bộ nhớ đệm xuống datafile khi transaction thực hiện commit. Như vậy rõ ràng, trước khi giao tác này thực hiện commit, có sự có xảy ra thì cũng không ảnh hưởng đến datafile bên dưới.  Immediate Update: kết quả thay đổi được lưu xuống datafile ngay sau khi thực hiện 1 thao tác dữ liệu trong một giao tác mà không cần chờ đến lệnh commit. 2.4. Checkpoint và cơ chế Logging:  Theo cơ chế logging và kỹ thuật Recovery Immedia Update ở trên thì sau mỗi lần commit hoặc abort của 1 giao tác thì DBMS lại yêu cầu DataFile Management ghi toàn bộ dữ liệu xuống datafile đồng thời ghi 1 entry vào trong logfile. Chú ý rằng việc lưu trữ này tiêu hao nhiều thời gian đặc biệt đối với hệ thống nhiều User cùng thực hiện cùng lúc.  Người ta đề ra checkpoint để giảm thiểu vấn đề trên. Như vậy sau 1 thời gian hạn định thì DBMS thực hiện lưu 1 checkpoint mà tại đó các giao tác vừa commit xong thì sẽ được lưu dữ liệu từ bộ nhớ đệm xuống datafile. Nếu trong khoảng thời gian đó giao tác hiện thời chưa hoàn tất(commit) thì DBMS sẽ đợi 1
  5. khoảng thời gian cho đến khi giao tác này hoàn tất. Trong khoảng thời gian này DBMS không nhận thêm bất kì 1 giao tác nào khác nữa. Sau khi lưu mọi thông tin xuông datafile , Log Manager ghi 1 entry vào trong logfile. Như vậy, có thể thấy ràng mọi công việc đã hoàn tất trước checkpoint. Nếu có 1 sự cố xảy ra sau này chỉ cần quay lại vị trí checkpoint là đảm bảo các tính chất của dữ liêu. Tuy nhiên, cũng phải nhận định rằng, việc chờ đợi 1 giao tác hoàn tất mà không tiếp nhận bất kì 1 giao tác nào khác trong thời gian đó sẽ làm trì hoãn hoạt động của DBMS, đặc biệt là với DBMS nhiều người dùng. Vì thế người ta đưa ra 1 kỹ thuật mới là Nonquiescent Checkpoint.  Nonquiescent Checkpoint: Cơ chế hoạt động của loại checkpoint này là: Ví dụ, chúng ta có 4 giao tác T1, T2, T3, T4. Ở thời điểm t1, Log Manager bắt đầu thực hiện lưu checkpoint. Tại thời điểm này có 2 giao tác đang hoạt động là T1 và T2 còn T3 và T4 chưa bất đầu giao tác của mình. Log Manager lưu vào logfile: . Log Manager tiếp tục đợi cho đến khi T1, T2 hoàn tất giao tác của mình cho đến t2. Trong khoảng thời gian từ t1 đến t2 này nó không ngăn cản bất cứ 1 giao tác nào vào hệ thống. Sau khi cả 2 giao tác hoàn tất Log Manager thực hiện lưu . Như vậy nếu 1 sự cố xảy ra ở thời điểm t3 > t2 > t1 thì 2 giao tác T1 và T2 xem như đã hoàn thành và không cần phục hồi nữa. Chỉ cần xét 2 giao tác T3 và T4 mà thôi. Tiếp tục xét như vậy thì cũng có thể thấy được là T3 đã hoàn thành trước thời điểm t3 vì trong logfile sẽ tồn tại 1 entry lưu commit cho giao tác T3 này. Như vậy công việc phục hồi chỉ cần thực hiện với T4 mà thôi.
  6. 3. DBMS áp dụng cơ chế phục hồi như thế nào: 3.1. Các kỹ thuật Recovery (3 kỹ thuật): 3.1.1. Undo Logging (Sử dụng cho cơ chế phục hồi Immediate Update): Như đã trình bày ở trên, mỗi thao tác update trên CSDL đều được Log Manager lưu lại 1 entry vào trong logfile. Việc phục hồi (Recovery) thực sự chỉ là việc rà soát và thực hiện sửa các lỗi dựa theo việc Logging. Như vậy, cơ chế Recovery phải phụ thuộc và được hỗ trợ bởi cơ chế lưu entry của Logging. Ở đây cơ chế Undo Logging hỗ trợ cho thao tác phục hồi CSDL theo dạng Undo, có nghĩa là phục hồi lại CSDL ở trạng thái trước khi 1 hoặc nhiều giao tác diễn ra nhưng chưa hoàn tất thì xảy ra sự cố. Quy tắc Logging:  Một entry có dạng: < Tn, X, v > . Trong đó, Tn là giao tác yêu cầu update cơ sở dữ liệu, X là ĐVDL trên CSDL và v là giá trị trước khi thay đổi. Ví dụ: UPDATE FROM Student AS s SET s.name= “Nam” WHERE s.id=”1”. Vậy: - X ở đây là entry student.name có id=1. - Giá trị cũ là 1 giá trị “XYZ”.  Entry trong logfile sẽ là < Tn, X, “XYZ” > mà không phải là < Tn, X, “Nam” >  Entry trong logfile phải được ghi trước khi ghi cập nhật dữ liệu cho DVDL X xuống datafile. Quy tắc này nhằm đảm bảo việc phục hồi nếu có sự cố trong việc lưu dữ liệu từ bộ nhớ đệm xuống datafile. Nhw trong ví dụ bên dưới thì việc lưu entry báo hiệu sự thay đổi vào logfile (2) phải được thực hiện trước khi lưu A với giá trị mới là 103 vào trong datafile (3). Công việc này gọi là Output(X) và được thực hiện ngầm định bên dưới hoặc được triệu gọi bởi hàm flush(). Hàm này thực hiện đẩy toàn bộ dữ liệu trong bộ nhớ đệm xuống vùng nhớ trên Datafile.  Entry phải được lưu cuối cùng, sau khi tất cả các công việc lưu từ bộ đệm xuống datafile hoàn tất. Quy tắc này nhằm thông báo rằng giao tác đã hoàn tất 1 cách thành công. Nếu có 1 sự cố nào xảy ra trong quá trình lưu trữ thì sẽ không tồn tại entry trong logfile. Điều này thông báo việc cần phải phục hồi dữ liệu lại trạng thái gần nhất.
  7. Time Transaction T T A A LogFile (on Buffer) (on Disk) 1 Start T 3 2 T = Read(A) 3 3 3 2 3 T = T + 100 103 1 3 3 4 Write(A,T) 103 103 3 5 Ouput(A) 3 103 6 Commit Như ví dụ trên, giả dụ có 1 sự cố xảy ra thì sẽ có 3 trường hợp như sau:  Sự cố điễn ra trước : Chẳng cần xét đến vì giao tác T còn chưa bắt đầu.  Sự cố diễn ra sau (hoặc abort): Cũng không cần xét đến việc phục hồi vì giao tác T đã hoàn thành trước đó.  Sự cố diễn ra trong khoảng và (hoặc abort): ví dụ ở đây sự cố là cúp điện, vào thời điểm từ 1 5, như vậy sẽ chỉ tồn tại trong logfile mà không tồn tại và . Khi hệ thống khởi động lại sau đó. Nó sẽ đọc trong logfile và phát hiện dấu hiệu của sự cố này. Biện pháp xử lý như sau: Cơ chế Phục hồi: Phục hồi các giao tác chưa hoàn tất về trạng thái ban đầu. B1: Đọc lại logfile từ dưới trở lên trên. B2: Với mỗi Entry có dạng thì thực hiện lưu (phục hồi) vào DVDL X giá trị cũ của X là v. Có nghĩa là thực hiện Write(X,v) và Output(X). B3: Thực hiện B2 cho đến khi gặp thì dừng lại. Và thực hiện lưu entry vào logfile để thông báo kết thúc giao tác phục hồi. Có thể thấy rằng việc Undo làm cho CSDL quay về trạng thái toàn vẹn gần nhất. 3.1.2. Undo Logging và Checkpoint: Cũng tương tự như Undo Logging nhưng chú ý 1 vài điểm sau:  Đối với Checkpoint thông thường:
  8.  Trong qua trình được ngược các entry trong logfile từ dưới lên trên: o Khi gặp entry có dạng: thì các Giao tác bắt đầu trước đó đã hoàn tất và không cần phục hồi vì đối với Checkpoint thông thường thì DBMS không tiếp nhận bất cứ 1 giao tác nào trong thời gian chờ đợi các giao tác hiện đang hoạt động hoàn tất. Dừng việc phục hồi tại đây. Ví dụ: xem ví dụ trong slide Phục hồi sự cố.  Đối với Nonquisecent Checkpoint:  Trong quá trình đọc ngườc các entry trong logfile từ dưới lên cần chú ý: o Nếu gạp entry có dạng thì các Giao tác bắt đầu trước đã hoàn tất. Loại bỏ các entry của giao tác này ra khỏi việc phục hồi. o Khi gặp entry có dạng: thì dừng công tác phục hồi. Ví dụ: xem ví dụ trong slide Phục hồi sự cố. Nhận xét: Cơ chế Undo Logging truy xuất ổ cứng nhiều.
  9. 3.1.3. Redo Logging (Sử dụng cho cơ chế phục hồi Defer Update): Vì cơ chế Defer Update lưu tất cả các update trên bộ nhớ đệm cho đến khi Giao tác thực hiện commit thì mới thực hiện đẩy dữ liệu xuống datafile. Quy tắc Logging: - Lưu các entry update có dạng trong đó u là giá trị mới được dùng để thay đổi cho giá trị cũ của DVDL X. Cơ chế Phục hồi: - Phục hồi lại các giao tác đã hoàn tất cả các giao tác đã hoàn tất và bỏ qua các giao tất chưa hoàn tất. B1: Đọc lại logfile từ dưới trở lên trên. B2:  Đối với giao tác T mà tồn tại 2 entry và trong logfile thì thực hiện lại tất cả thao tác với tất cả entry của giao tác này từ entry cho đến .Mỗi Entry có dạng thì thực hiện lưu (phục hồi) vào DVDL X giá trị cũ của X là v. Có nghĩa là thực hiện Write(X,v) và Output(X).  Đối với giao tác T mà chỉ tồn tại entry mà không tồ tại thì bỏ qua giao tác này trong công tác phục hồi vì nó chưa hoàn tất. Và thực hiện lưu entry vào logfile cho các giao tác chưa hoàn tất này. Nhận xét: cơ chế này làm tốn bộ nhớ đệm . 3.1.4. Undo/ Redo Logging Kết hợp 2 cơ chế Undo và Redo để đưa ra cơ chế chung giảm thiểu được các nhược điểm của 2 cơ chế này, như vậy quy tắc và cơ chế ở đây được kết hợp lại là: Quy tắc Logging: - Lưu các entry có dạng . Trong đó: o T là giao tác. o X là ĐVDL. o V là giá trị cũ. o U là giá trị mới.
  10. Cơ chế Phục hồi: - Phục hồi lại các giao tác chưa hoàn thành theo cơ chế Undo. - Phục hồi lại các giao tác đã hoàn thành theo cơ chế Redo. Ví dụ: xem trong slide Phục hồi sự cố. 4. Bài tập: Các bài tập ở phần này có các dạng sau: - Dạng 1: Cho nội dung (các entry) của 1 logfile. o Yêu cầu: Phát hiện cơ chế Logging đang được sử dụng và thực hiện phục hồi lại dữ liệu. o Hướng dẫn: Dựa vào cấu trúc của entry update để xét cơ chế Logging.    Sau đó dựa vào loại cơ chế mà thực hiện các thao tác phục hồi cho phù hợp. - Dạng 2: Cho chuỗi thao tác của các thao tác T1,T2, T3 … . o Yêu cầu: Thực hiện logging theo các cơ chế (Undo, Redo, Undo/Redo …) và sau đó thực hiện phục hồi dữ liệu khi có sự cố xảy ra giữa 2 thao tác nào đó. o Hướng dẫn: Dựa vào loại cơ chế là Undo, Redo hay Undo, Redo mà thực hiện lưu giá trị mới, cũ hay cả hai. - Khi có sự cố xảy ra thì bài toán quay về dạng 1.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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