Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL

การกู้คืนการอัปเดตแบบเลื่อนเวลา:การใช้ NO-UNDO และ REDO เพื่อความสมบูรณ์ของข้อมูลที่เชื่อถือได้

ในการกู้คืนการอัปเดตที่เลื่อนออกไป การปรับเปลี่ยนฐานข้อมูลจริงบนดิสก์จะถูกเลื่อนออกไปจนกว่าธุรกรรมจะกระทำ การอัพเดตจะถูกบันทึกไว้ในบันทึกและบัฟเฟอร์แคชระหว่างการดำเนินการเท่านั้น หากธุรกรรมล้มเหลวก่อนที่จะคอมมิต ฐานข้อมูลบนดิสก์จะไม่ได้รับผลกระทบ ดังนั้นจึงไม่ต้องเลิกทำ ทำซ้ำเท่านั้นที่จำเป็นสำหรับธุรกรรมที่คอมมิตซึ่งการเปลี่ยนแปลงที่ยังไม่ได้เขียนลงดิสก์

โปรโตคอลการอัปเดตที่เลื่อนออกไป

  • ธุรกรรมไม่สามารถแก้ไขฐานข้อมูลบนดิสก์ได้จนกว่าจะถึงจุดกระทำ
  • รายการบันทึกการทำซ้ำทั้งหมดจะต้องถูกเขียนลงดิสก์ก่อนที่จะคอมมิต (การบันทึกแบบเขียนล่วงหน้า)
  • ต้องใช้เฉพาะรายการบันทึกทำซ้ำ (ค่าใหม่/AFIM) ไม่จำเป็นต้องแสดงรายการ UNDO

ขั้นตอนการกู้คืน (RDU_M)

สำหรับระบบที่มีผู้ใช้หลายรายที่มีการล็อคแบบสองเฟสที่เข้มงวด อัลกอริธึมการกู้คืนจะรักษาสองรายการ

  • รายการคอมมิต ธุรกรรมที่คอมมิตตั้งแต่จุดตรวจสอบล่าสุด
  • ธุรกรรมรายการที่ใช้งานอยู่ซึ่งยังคงใช้งานอยู่ (ไม่ได้ผูกมัด)

REDO ใช้กับการดำเนินการเขียนของธุรกรรมที่คอมมิตตามลำดับบันทึก ธุรกรรมที่ใช้งานอยู่ (ไม่มีข้อผูกมัด) จะถูกยกเลิกอย่างมีประสิทธิภาพและจะต้องส่งใหม่อีกครั้ง

ไทม์ไลน์ตัวอย่าง

จุดตรวจสอบ (t1) ความผิดพลาด (t2) T1 (มุ่งมั่น) T2 → ทำซ้ำ T3 → ทำซ้ำ T4 → ละเว้น (ไม่มีการกระทำ) T5 → ละเว้น (ไม่มีการกระทำ)

T1 กระทำก่อนจุดตรวจ ไม่จำเป็นต้องทำซ้ำ T2, T3 ที่กระทำหลังจากจุดตรวจจะต้องทำใหม่ T4, T5 ไม่เคยคอมมิตที่ถูกละเว้น (ไม่มีการเปลี่ยนแปลงบนดิสก์ภายใต้การอัปเดตที่เลื่อนออกไป)

ทำซ้ำการเพิ่มประสิทธิภาพ

หากรายการ X ได้รับการอัปเดตหลายครั้งตามธุรกรรมที่คอมมิต เฉพาะการอัปเดตครั้งล่าสุดเท่านั้นที่ต้องทำใหม่

  • สำรวจบันทึกในลำดับย้อนกลับ
  • รักษารายการของรายการที่ทำซ้ำแล้ว
  • ข้ามรายการที่มีอยู่แล้วในรายการ (กู้คืนค่าสุดท้ายแล้ว)
  • ทำซ้ำเฉพาะรายการที่ยังไม่อยู่ในรายการ จากนั้นจึงเพิ่ม

ข้อดีและข้อจำกัด

ข้อดี ข้อจำกัด ไม่จำเป็นต้องย้อนกลับเมื่อเกิดความล้มเหลว (ไม่เลิกทำ) รายการที่ล็อคการเขียนจะยังคงล็อคอยู่จนกว่าจะคอมมิต ไม่มีการย้อนกลับแบบเรียงซ้อน (ไอเท็มถูกล็อคจนกว่าจะคอมมิต) ต้องใช้พื้นที่บัฟเฟอร์สำหรับการอัปเดตทั้งหมดจนกระทั่งคอมมิต ธุรกรรมที่ถูกยกเลิกเพียงแค่ส่งใหม่ ใช้งานได้จริงสำหรับธุรกรรมระยะสั้นที่มีการเปลี่ยนแปลงเล็กน้อยเท่านั้น

บทสรุป

การอัปเดตที่เลื่อนออกไปแบบ NO-UNDO/REDO จะเลื่อนการเขียนดิสก์ออกไปจนกว่าจะคอมมิต ซึ่งช่วยลดความจำเป็นในการดำเนินการ UNDO ในระหว่างการกู้คืน เฉพาะธุรกรรมที่คอมมิตหลังจากจุดตรวจสุดท้ายเท่านั้นที่ต้องทำซ้ำ สิ่งนี้ทำให้การกู้คืนง่ายขึ้นแต่จำกัดการทำงานพร้อมกันและต้องการพื้นที่บัฟเฟอร์เพียงพอเพื่อเก็บการเปลี่ยนแปลงที่ไม่มีข้อผูกมัดทั้งหมด

การกู้คืนการอัปเดตแบบเลื่อนเวลา:การใช้ NO-UNDO และ REDO เพื่อความสมบูรณ์ของข้อมูลที่เชื่อถือได้


No