การทำ shadow paging เป็นอีกเทคนิคในการ recovery นอกจาก log-based recovery ซึ่งใช้บนเครื่อง PC เท่านั้น โดย DBMS จะเขียนข้อมูลลง DB space เสมอ แม้ในขณะทำ transaction แต่การเขียนลง disk จะใช้วิธี shadow paging คือเมื่อมีการแก้ไขข้อมูลใน page ใดๆ ให้มีการสร้าง page ใหม่ขึ้นมาเพื่อเก็บข้อมูลของทั้ง page นั้นๆ ที่มีการเปลี่ยนแปลงแล้ว เมื่อมีการ commit ก็จะชี้ไปที่ page ใหม่ แต่ถ้ามี system crash หรือ transaction fail ก็จะกลับไปชี้ที่ page เก่า
ขอนอกเรื่องนิดหน่อย สำหรับ DB recovery ซึ่งเป็นเกร็ดนอกเหนือจาก Shadow Paging
การ recovery จะต้องเป็น idempotent หรือการปฏิบัิติกิจกรรมใดๆ หลายครั้ง จะต้องได้ผลเหมือนปฏิบัติเพียงครั้งเีดียว เ่ช่นในขณะที่มีการ recovery อยู่และีมี system crash เมื่อ start server ขึ้นมาใหม่ การ recovery ไม่ว่าจะทำกี่ครั้งก็ตามจะต้องให้ผลเหมือนกับทำครั้งเดียว ซึ่ง log-based recovery มีคุณสมบัติ idempotent แน่นอน
No comments:
Post a Comment