การฟื้นสภาพและการควบคุมสภาวะพร้อมกัน ผู้ช่วยศาสตราจารย์ณัฎฐพร พิมพายน
การฟื้นสภาพและการควบคุมสภาวะพร้อมกัน การฟื้นสภาพ หมายถึง การที่ระบบจัดการฐานข้อมูลจัดการกับ ข้อมูลให้ย้อนกลับไปอยู่ในสภาพเดิมที่ถูกต้อง ภาวะพร้อมกัน หมายถึง การที่มีทรานแซกชันหลายๆทรานแซกชัน ต้องการเรียกใช้ข้อมูลเดียวกันในเวลาเดียวกันจากฐานข้อมูล เพื่อใช้ในการทำงานของแต่ละทรานแซกชัน
การฟื้นสภาพและการควบคุมสภาวะพร้อมกัน
การฟื้นสภาพ ประเภทของการเกิดความขัดข้อง ความขัดข้องของระบบ จะมีผลกระทบต่อทรานแซกชัน แต่ไม่ทำลายข้อมูลที่อยู่ในฐานข้อมูล เรียกว่า ซอฟต์แครช (Soft Crash) ความขัดข้องของทรายแซกชัน จะมีผลกระทบต่อทรายแซกชันที่มีความขัดข้องเท่านั้น เช่น การกำหนดขอบเขตของทรานแซกชัน, การเกิด overflow ในการทำงาน เป็นต้น ความขัดข้องของสื่อข้อมูล จะมีผลกระทบต่อทรานแซกชัน และมีผลทำลายฐานข้อมูล เรียกว่า ฮาร์ดแครช (Hard Crash)
การฟื้นสภาพ วิธีการฟื้นสภาพ การฟื้นสภาพแบบล็อกเบส (log-based recovery) โดยการใช้ไฟล์ประวัติเข้ามาช่วยในการฟื้นสภาพ รายละเอียดของไฟล์ประวัติ ประกอบด้วย ชื่อทรานแซกชัน, ชื่อเดตาไอเท็ม, ค่าเก่าของดาตาไอเท็มก่อนทำการบันทึก และค่าใหม่ของดาตาไอเท็มหลังทำการบันทึก วิธีการฟื้นสภาพ มี 3 วิธี คือ การยกเลิก(Undo), การทำซ้ำ(Redo), จุดตรวจสอบ(Checkpoint)
การฟื้นสภาพ การกู้ข้อมูลจากความขัดข้องที่เกิดจาระบบคอมพิวเตอร์ จะได้กลุ่มของทรานแซกชันที่จะทำ Undo ดึงค่าเก่าก่อนการเปลี่ยนแปลงกลับมา แล้วทำทรานแซกชันซ้ำอีกครั้ง Redo ดึงค่าใหม่หลังการเปลี่ยนแปลงมาแทนที่ จนกระทั่ง ทรานแซกชันนั้นสมบูรณ์
การฟื้นสภาพ การกู้ข้อมูลจากความขัดข้องที่เกิดจากข้อผิดพลาดของรายการ จะใช้วิธีการ Undo การกู้ข้อมูลจากความขัดข้องที่เกิดจากสื่อบันทึกข้อมูล จะทำการฟื้นสภาพจากการสำรองข้อมูลหรือการทำ Redo กับทรานแซกชันที่ทำการ Commit แล้ว
การควบคุมสภาวะพร้อมกัน ปัญหาที่ทำให้มีการควบคุมภาวะพร้อมกัน ปัญหาการสูญหายของข้อมูลที่มีการปรับปรุงแก้ไข ปัญหาจากการเรียกใช้ข้อมูลชุดเดียวกันของทรานแซกชันที่ยังไม่ Commit ปัญหาการเรียกใช้ข้อมูลที่ไม่สอดคล้องกัน
การควบคุมสภาวะพร้อมกัน ประเภทการล็อค มี 2 แบบ คือ Exclusive Lock คือ การล็อคโดยไม่ให้ทรานแซกชันอื่นเข้ามาใช้งานเลย เช่น การปรับปรุงระเบียน Shared Lock คือ การล็อคที่ยอมให้ทรานแซกชันอื่นๆ มาใช้ข้อมูลได้ แต่ต้องไม่ใช่การปรับปรุงระเบียนหรืออื่นๆ ที่เป็น Exclusive Lock ระดับการล็อค
การควบคุมสภาวะพร้อมกัน ระดับการล็อค การล็อคฐานข้อมูลทั้งฐาน จะใช้ในการทำสำรองข้อมูล การล็อคเฉพาะตารางใดตารางหนึ่งในฐานข้อมูล จะใช้ในกรณีที่มีการปรับปรุงหรือแก้ไขข้อมูลทั้งหมดในตารางนั้น การล็อคเฉพาะแถวบางแถว จะใช้ในการเขียนโปรแกรมปรับปรุงระเบียนใดระเบียนหนึ่ง การล็อคเฉพาะบางฟิลด์ จะมีการใช้น้อยมาก
การควบคุมสภาวะพร้อมกัน Dead Lock คือ การที่ทรานแซกชันรอการใช้ข้อมูลที่ถูกล็อคโดย ทรานแซกชันอื่นอย่างไม่รู้จบในลักษณะเป็นลูกโซ่
การควบคุมสภาวะพร้อมกัน วิธีการแก้ปัญหา Dead Lock การป้องกันก่อนเกิด Dead Lock โดยจะต้องทำการล็อคข้อมูลที่เกี่ยวข้องทุกอันให้ได้ก่อนการใช้งาน การตรวจจับการเกิด Dead Lock คือการเกิด Dead Lock ขึ้นแล้ว สามารถทำการแก้ไขโดยการปิดระบบทั้งหมดแล้วเริ่มใหม่ หรือตัดทรานแซกชันออกจากวัฏจักรการรอคอย
การควบคุมสภาวะพร้อมกัน วิธีการควบคุมภาวะความพร้อมกัน Locking Technique คือ การล็อคข้อมูลในฐานข้อมูลจนกว่าจะทำงานเสร็จ ข้อเสียคือ อาจทำให้เกิด Dead Lock Time Stamp Technique คือ การที่ระบบจัดการฐานข้อมูลจะระบุลำดับของแต่ละทรานแซกชันในการเข้าทำงาน ทำให้ไม่เกิดปัญหา Dead Lock Optimistic Technique คือ การปรับปรุงหรือการแก้ไข ข้อมูลจะบันทึกไว้พื้นที่อื่นชั่วคราวจนกว่าจะทำงานเสร็จสมบูรณ์เสียก่อน และจะมีการตรวจสอบก่อนบันทึกข้อมูลอย่างถาวรว่าข้อมูลที่จะบันทึกต้องไม่ขัดแย้งกับทรานแซกชันอื่นๆ ไม่เช่นนั้นแล้วจะทำการ Rollback ข้อมูล