ในการกู้คืนการอัปเดตที่เลื่อนออกไป การปรับเปลี่ยนฐานข้อมูลจริงบนดิสก์จะถูกเลื่อนออกไปจนกว่าธุรกรรมจะกระทำ การอัพเดตจะถูกบันทึกไว้ในบันทึกและบัฟเฟอร์แคชระหว่างการดำเนินการเท่านั้น หากธุรกรรมล้มเหลวก่อนที่จะคอมมิต ฐานข้อมูลบนดิสก์จะไม่ได้รับผลกระทบ ดังนั้นจึงไม่ต้องเลิกทำ ทำซ้ำเท่านั้นที่จำเป็นสำหรับธุรกรรมที่คอมมิตซึ่งการเปลี่ยนแปลงที่ยังไม่ได้เขียนลงดิสก์
โปรโตคอลการอัปเดตที่เลื่อนออกไป
- ธุรกรรมไม่สามารถแก้ไขฐานข้อมูลบนดิสก์ได้จนกว่าจะถึงจุดกระทำ
- รายการบันทึกการทำซ้ำทั้งหมดจะต้องถูกเขียนลงดิสก์ก่อนที่จะคอมมิต (การบันทึกแบบเขียนล่วงหน้า)
- ต้องใช้เฉพาะรายการบันทึกทำซ้ำ (ค่าใหม่/AFIM) ไม่จำเป็นต้องแสดงรายการ UNDO
ขั้นตอนการกู้คืน (RDU_M)
สำหรับระบบที่มีผู้ใช้หลายรายที่มีการล็อคแบบสองเฟสที่เข้มงวด อัลกอริธึมการกู้คืนจะรักษาสองรายการ
- รายการคอมมิต ธุรกรรมที่คอมมิตตั้งแต่จุดตรวจสอบล่าสุด
- ธุรกรรมรายการที่ใช้งานอยู่ซึ่งยังคงใช้งานอยู่ (ไม่ได้ผูกมัด)
REDO ใช้กับการดำเนินการเขียนของธุรกรรมที่คอมมิตตามลำดับบันทึก ธุรกรรมที่ใช้งานอยู่ (ไม่มีข้อผูกมัด) จะถูกยกเลิกอย่างมีประสิทธิภาพและจะต้องส่งใหม่อีกครั้ง
ไทม์ไลน์ตัวอย่าง
จุดตรวจสอบ (t1) ความผิดพลาด (t2) T1 (มุ่งมั่น) T2 → ทำซ้ำ T3 → ทำซ้ำ T4 → ละเว้น (ไม่มีการกระทำ) T5 → ละเว้น (ไม่มีการกระทำ)T1 กระทำก่อนจุดตรวจ ไม่จำเป็นต้องทำซ้ำ T2, T3 ที่กระทำหลังจากจุดตรวจจะต้องทำใหม่ T4, T5 ไม่เคยคอมมิตที่ถูกละเว้น (ไม่มีการเปลี่ยนแปลงบนดิสก์ภายใต้การอัปเดตที่เลื่อนออกไป)
ทำซ้ำการเพิ่มประสิทธิภาพ
หากรายการ X ได้รับการอัปเดตหลายครั้งตามธุรกรรมที่คอมมิต เฉพาะการอัปเดตครั้งล่าสุดเท่านั้นที่ต้องทำใหม่
- สำรวจบันทึกในลำดับย้อนกลับ
- รักษารายการของรายการที่ทำซ้ำแล้ว
- ข้ามรายการที่มีอยู่แล้วในรายการ (กู้คืนค่าสุดท้ายแล้ว)
- ทำซ้ำเฉพาะรายการที่ยังไม่อยู่ในรายการ จากนั้นจึงเพิ่ม
ข้อดีและข้อจำกัด
บทสรุป
การอัปเดตที่เลื่อนออกไปแบบ NO-UNDO/REDO จะเลื่อนการเขียนดิสก์ออกไปจนกว่าจะคอมมิต ซึ่งช่วยลดความจำเป็นในการดำเนินการ UNDO ในระหว่างการกู้คืน เฉพาะธุรกรรมที่คอมมิตหลังจากจุดตรวจสุดท้ายเท่านั้นที่ต้องทำซ้ำ สิ่งนี้ทำให้การกู้คืนง่ายขึ้นแต่จำกัดการทำงานพร้อมกันและต้องการพื้นที่บัฟเฟอร์เพียงพอเพื่อเก็บการเปลี่ยนแปลงที่ไม่มีข้อผูกมัดทั้งหมด