DBMS phân tán - Lỗi và cam kết
Một hệ thống quản lý cơ sở dữ liệu dễ bị một số lỗi. Trong chương này, chúng ta sẽ nghiên cứu các loại lỗi và các giao thức cam kết. Trong một hệ thống cơ sở dữ liệu phân tán, lỗi có thể được phân loại rộng rãi thành lỗi mềm, lỗi cứng và lỗi mạng.
Lỗi mềm
Lỗi mềm là loại lỗi gây mất bộ nhớ dễ bay hơi của máy tính và không lưu trữ lâu dài. Tại đây, thông tin được lưu trữ trong bộ nhớ không liên tục như bộ nhớ chính, bộ đệm, bộ nhớ đệm hoặc thanh ghi sẽ bị mất. Chúng còn được gọi là sự cố hệ thống. Các dạng hư hỏng mềm khác nhau như sau:
- Hệ điều hành bị lỗi.
- Sự cố bộ nhớ chính.
- Giao dịch thất bại hoặc phá thai.
- Hệ thống tạo ra lỗi như lỗi tràn số nguyên hoặc lỗi chia cho không.
- Lỗi phần mềm hỗ trợ.
- Mất điện.
Thất bại khó
Lỗi cứng là loại lỗi gây ra mất dữ liệu trong bộ lưu trữ liên tục hoặc không bay hơi như đĩa. Lỗi đĩa có thể gây ra hỏng dữ liệu trong một số khối đĩa hoặc hỏng toàn bộ đĩa. Nguyên nhân của một lỗi khó là -
- Mất điện.
- Lỗi trong phương tiện.
- Đọc-ghi trục trặc.
- Tham nhũng thông tin trên đĩa.
- Sự cố đầu đọc / ghi của đĩa.
Quá trình khôi phục sau lỗi đĩa có thể ngắn, nếu có đĩa dự trữ mới, đã định dạng và sẵn sàng sử dụng. Nếu không, thời lượng bao gồm thời gian cần thiết để nhận đơn đặt hàng, mua đĩa và chuẩn bị.
Lỗi mạng
Lỗi mạng phổ biến trong cơ sở dữ liệu mạng hoặc phân tán. Những lỗi này bao gồm các lỗi gây ra trong hệ thống cơ sở dữ liệu do tính chất phân tán của dữ liệu và truyền dữ liệu qua mạng. Nguyên nhân của lỗi mạng như sau:
- Lỗi liên kết giao tiếp.
- Nghẽn mạng.
- Thông tin bị hỏng trong quá trình chuyển giao.
- Lỗi trang web.
- Phân vùng mạng.
Giao thức cam kết
Bất kỳ hệ thống cơ sở dữ liệu nào cũng phải đảm bảo rằng các thuộc tính mong muốn của một giao dịch được duy trì ngay cả khi bị lỗi. Nếu một sai sót xảy ra trong quá trình thực hiện một giao dịch, có thể xảy ra rằng tất cả các thay đổi do giao dịch mang lại không được cam kết. Điều này làm cho cơ sở dữ liệu không nhất quán. Các giao thức cam kết ngăn chặn trường hợp này bằng cách sử dụng hoàn tác giao dịch (rollback) hoặc thực hiện lại giao dịch (chuyển tiếp).
Điểm cam kết
Thời điểm đưa ra quyết định cam kết hay hủy bỏ một giao dịch được gọi là điểm cam kết. Sau đây là các thuộc tính của một điểm cam kết.
Đó là một thời điểm khi cơ sở dữ liệu nhất quán.
Tại thời điểm này, các sửa đổi do cơ sở dữ liệu mang lại có thể được nhìn thấy bởi các giao dịch khác. Tất cả các giao dịch có thể có một cái nhìn nhất quán về cơ sở dữ liệu.
Tại thời điểm này, tất cả các hoạt động của giao dịch đã được thực hiện thành công và tác động của chúng đã được ghi lại trong nhật ký giao dịch.
Tại thời điểm này, một giao dịch có thể được hoàn tác một cách an toàn, nếu được yêu cầu.
Tại thời điểm này, một giao dịch giải phóng tất cả các khóa do nó nắm giữ.
Hoàn tác giao dịch
Quá trình hoàn tác tất cả các thay đổi được thực hiện đối với cơ sở dữ liệu bởi một giao dịch được gọi là hoàn tác giao dịch hoặc hoàn tác giao dịch. Điều này chủ yếu được áp dụng trong trường hợp hỏng mềm.
Làm lại giao dịch
Quá trình áp dụng lại các thay đổi được thực hiện đối với cơ sở dữ liệu bởi một giao dịch được gọi là thực hiện lại giao dịch hoặc chuyển tiếp giao dịch. Điều này chủ yếu được áp dụng để phục hồi sau một thất bại khó.
Nhật ký giao dịch
Nhật ký giao dịch là một tệp tuần tự theo dõi các hoạt động giao dịch trên các mục cơ sở dữ liệu. Vì bản chất nhật ký là tuần tự, nên nó được xử lý tuần tự từ đầu hoặc từ cuối.
Mục đích của nhật ký giao dịch -
- Để hỗ trợ các giao thức cam kết để cam kết hoặc hỗ trợ các giao dịch.
- Để hỗ trợ khôi phục cơ sở dữ liệu sau khi bị lỗi.
Nhật ký giao dịch thường được giữ trên đĩa để nó không bị ảnh hưởng bởi các lỗi mềm. Ngoài ra, nhật ký được sao lưu định kỳ vào một kho lưu trữ giống như băng từ để bảo vệ nó khỏi lỗi đĩa.
Liệt kê trong Nhật ký Giao dịch
Nhật ký giao dịch duy trì năm loại danh sách tùy thuộc vào trạng thái của giao dịch. Danh sách này hỗ trợ người quản lý khôi phục xác định trạng thái của giao dịch. Trạng thái và danh sách tương ứng như sau:
Một giao dịch có bản ghi bắt đầu giao dịch và bản ghi cam kết giao dịch, là một giao dịch đã cam kết - được duy trì trong danh sách cam kết.
Giao dịch có bản ghi bắt đầu giao dịch và bản ghi giao dịch không thành công nhưng không phải là bản ghi hủy giao dịch, là giao dịch không thành công - được duy trì trong danh sách không thành công.
Giao dịch có hồ sơ bắt đầu giao dịch và hồ sơ hủy giao dịch là giao dịch bị hủy bỏ - được duy trì trong danh sách hủy bỏ.
Giao dịch có bản ghi bắt đầu giao dịch và bản ghi giao dịch trước khi cam kết là giao dịch trước khi cam kết, tức là giao dịch trong đó tất cả các hoạt động đã được thực hiện nhưng không được cam kết - được duy trì trong danh sách trước khi cam kết.
Một giao dịch có bản ghi bắt đầu giao dịch nhưng không có bản ghi trước khi cam kết, cam kết, hủy bỏ hoặc không thành công, là một giao dịch đang hoạt động - được duy trì trong danh sách hoạt động.
Cập nhật ngay lập tức và cập nhật hoãn lại
Cập nhật ngay lập tức và Cập nhật hoãn lại là hai phương pháp để duy trì nhật ký giao dịch.
Trong immediate update, khi một giao dịch thực hiện, các cập nhật do giao dịch thực hiện sẽ được ghi trực tiếp vào đĩa. Các giá trị cũ và giá trị cập nhật được ghi vào nhật ký trước khi ghi vào cơ sở dữ liệu trong đĩa. Khi cam kết, các thay đổi được thực hiện đối với đĩa được thực hiện vĩnh viễn. Khi khôi phục, các thay đổi được thực hiện bởi giao dịch trong cơ sở dữ liệu sẽ bị loại bỏ và các giá trị cũ được khôi phục vào cơ sở dữ liệu từ các giá trị cũ được lưu trữ trong nhật ký.
Trong deferred updatechế độ, khi một giao dịch thực hiện, các cập nhật được thực hiện cho cơ sở dữ liệu bởi giao dịch được ghi lại trong tệp nhật ký. Khi cam kết, các thay đổi trong nhật ký được ghi vào đĩa. Khi khôi phục, các thay đổi trong nhật ký sẽ bị loại bỏ và không có thay đổi nào được áp dụng cho cơ sở dữ liệu.