Các khái niệm hệ thống và giao tác

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Xử lý truy vấn và quản lý giao tác trong cơ sở dữ liệu Luận văn ThS Công nghệ thông tin 1.01.10 (Trang 62 - 65)

2.2.1 Các trạng thái giao tác và các phép toán bổ xung

Một giao tác là một đơn vị nhỏ nhất của công việc, nó hoặc là đƣợc hoàn thành toàn bộ hoặc không làm gì cả. Đối với mục đích khôi phục, hệ thống cần lại lƣu vết khi một giao tác bắt đầu và kết thúc để xác nhận hoặc hủy bỏ. Do đó, bộ quản lý khôi phục lƣu vết của các thao tác dƣới đây [6]:

- BEGIN_TRANSACTION: đánh dấu bắt đầu thực thi một giao tác

- READ hoặc WRITE: Chỉ ra thao tác đọc hoặc viết trên các mục cơ sở dữ liệu đƣợc thực thi nhƣ một phần của giao tác

- END_TRANSACTION: Chỉ ra các thao tác READ và WRITE kết thúc và đánh dấu kết thúc thực thi giao tác. Tuy nhiên, tại điểm này cần phải kiểm tra xem sự thay đổi bởi giao tác đƣợc xác nhận hoặc giao tác đƣợc huỷ bỏ do vi phạm trật tự hoặc với một số lý do khác.

- COMMIT_TRANSACTION: báo hiệu kết thúc thành công của một giao tác, do đó bất kỳ sự thay đổi nào thực thi bởi giao tác đƣợc xác nhận tới cơ sở dữ liệu và sẽ không thể khôi phục.

- ROLLBACK (hoặc ABORT): báo hiệu giao tác kết thúc không thành công, do đó bất kỳ sự thay đổi hoặc ảnh hƣởng nào của giao tác tác động lên cơ sở dữ liệu phải đƣợc huỷ bỏ.

Hình 2.4 thể hiện sơ đồ trạng thái giao tác. Một giao tác đi vào trạng thái hoạt động ngay sau khi nó bắt đầu thực thi, nó có thể đƣa ra các thao tác READ và WRITE. Khi kết thúc giao tác, thì nó chuyển tới trạng thái đã xác nhận một phần. Tại điểm này, một số giao thức khôi phục đảm bảo rằng nếu lỗi hệ thống thì không đƣa ra kết quả và không ghi những thay đổi cơ sở dữ liệu của giao tác đó. Việc kiểm tra này thành công thì giao tác đƣợc xem là đã

tiếp cận đến điểm xác nhận và đƣa vào trạng thái xác nhận. Khi giao tác đƣợc xác nhận, nghĩa là nó đã thực thi thành công và toàn bộ sự thay đổi đó phải đƣợc lƣu trong cơ sở dữ liệu.

Tuy nhiên, một giao tác có thể dẫn tới trạng thái lỗi nếu một trong các lần kiểm tra bị lỗi hoặc nếu giao tác bị huỷ bỏ trong khi nó ở trạng thái hoạt động. Giao tác này sau đó phải đƣợc xem lại để xóa bỏ ảnh hƣởng của các thao tác WRITE lên cơ sở dữ liệu. Trạng thái kết thúc đƣợc coi là giao tác tách khỏi hệ thống. Thông tin về giao tác đƣợc duy trì trong các bảng hệ thống trong khi giao tác đang thực hiện và đƣợc hủy bỏ khi kết thúc giao tác. Các giao tác lỗi hoặc huỷ bỏ có thể đƣợc khởi động lại sau đó một cách tự động hoặc sau khi đƣợc chấp nhận lại bởi ngƣời dùng nhƣ các giao tác mới.

2.2.2 File log hệ thống

Để khôi phục sau các lỗi ảnh hƣởng đến các giao tác, hệ thống duy trì một file log (nhật ký DBMS) để lƣu tất cả các hoạt động giao tác ảnh hƣởng đến giá trị của các mục dữ liệu. Thông tin này cần đến để cho phép khôi phục sau các lỗi. Bản ghi đƣợc lƣu trên đĩa, do đó nó không bị ảnh hƣởng bởi bất kỳ loại rủi ro nào ngoại trừ trƣờng hợp lỗi ổ đĩa hoặc các lỗi thảm hoạ. Thêm vào đó file log này đƣợc sao lƣu một cách định kỳ ra băng hoặc đĩa mềm để

Bắt đầu giao tác Hoạt động đọc, ghi kết thúc giao tác Thất bại Đã cam kết cam kết Bãi bỏ Bãi bỏ Cam kết từng phần Kết thúc

Hình 2.4. Biểu đồ trạng thái giao tác minh hoạ các trạng thái đối với việc thực hiện giao tác

đề phòng các trƣờng hợp lỗi. Các mục, đƣợc gọi là các bản ghi log, đƣợc ghi vào trong file [6]:

1. [Start_transaction, T]: giao tác T bắt đầu thực thi

2. [Write_item,T,X,old_value,new_value]: giao tác T thay đổi giá trị của mục cơ sở dữ liệu X từ giá trị cũ sang giá trị mới.

3. [Read_item,T,X]: giao tác T đọc giá trị của mục cơ sở dữ liệu X

4. [Commit,T]: giao tác T đƣợc kết thúc thành công, và xác nhận những ảnh hƣởng của giao tác này đƣợc đƣợc lƣu vào trong cơ sở dữ liệu

5. [Abort,T]: giao tác T bị hủy bỏ.

Công việc khôi phục bao gồm tất cả các giao tác thực thi. Giả định tất cả những thay đổi lên cơ sở dữ liệu xẩy ra trong giao tác, vì vậy các giao tác lỗi hoặc các thao tác trong giao tác lỗi sẽ đƣợc phục hồi từ file log. Nếu hệ thống bị xung đột thì có thể phục hồi trạng thái cơ sở dữ liệu bằng cách kiểm tra lại giao tác trong file log vì bản ghi gồm các thao tác“Write” làm thay đổi giá trị của một vài mục cơ sở dữ liệu. Sau khi thực hiện xong mỗi thao tác trong giao tác T, CSDL vẫn có thể khôi phục bằng cách trở lại file log và cài đặt lại tất cả các khoản mục bị thay đổi bởi thao tác “Write” trong T để lấy lại giá trị cũ. Thực hiện lại những thao tác của giao tác cũng là cần thiết vì tất cả những cập nhật của chúng đều đƣợc ghi trong file log.

2.2.3 Điểm xác nhận của một giao tác [1, 4, 6]

Một giao tác T tiến đến điểm xác nhận khi toàn bộ các thao tác truy cập cơ sở dữ liệu đƣợc thực thi thành công và ảnh hƣởng của tất các thao tác trong giao tác lên cơ sở dữ liệu đƣợc lƣu vào file log. Ngoài điểm xác nhận, giao tác đƣợc gọi là đã xác nhận, và ảnh hƣởng của nó đƣợc đƣợc xem nhƣ đã lƣu lên cơ sở dữ liệu. Sau đó giao tác ghi một bản ghi xác nhận [commit,T] vào trong file log.

File log phải đƣợc lƣu giữ trên đĩa. Phổ biến là lƣu một hoặc nhiều khối của file log trong các vùng đệm cho tới khi vùng đệm đƣợc điền đầy và sau đó chúng đƣợc lƣu lên đĩa, điều này tiết kiệm đƣợc chi phí. Tại thời điểm một hệ thống sụp đổ, chỉ các mục log ghi lại trên đĩa đƣợc xem xét trong xử lý khôi phục bởi vì nội dung của bộ nhớ chính có thể bị mất. Do đó, trƣớc khi một giao tác tiến đến điểm xác nhận, bất kỳ phần nào của file log chƣa đƣợc ghi lên đĩa thì phải đƣợc ghi lên đĩa. Quá trình này đƣợc gọi là ghi bắt buộc file log trƣớc khi xác nhận một giao tác.

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Xử lý truy vấn và quản lý giao tác trong cơ sở dữ liệu Luận văn ThS Công nghệ thông tin 1.01.10 (Trang 62 - 65)

Tải bản đầy đủ (PDF)

(83 trang)