ปัญหาในการใช้ระบบฐานข้อมูล

การกู้คืนและการเกิดภาวะพร้อมกัน

 

 

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

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

การเกิดภาวะพร้อมกัน (Concurrency) 
ในระบบฐานข้อมูลที่ใช้กัน มักจะเป็นระบบที่ผู้ใช้หลายๆ คน สามารถใช้ข้อมูลพร้อมกันได้ในเวลาเดียวกัน ปัญหาจึงมาจากากรที่ผู้ใช้หลายๆ คน มีการเรียกใช้ข้อมูลชุดเดียวกันในเวลาพร้อมๆ กัน จึงทำให้เกิดภาวะพร้อมกัน และหากไม่มีการควบคุมที่ดี ก็จะทำให้เกิดปัญหาตามมาได้แก่
 ปัญหาข้อมูลไม่ได้ถูกแก้ไขให้ถูกต้อง
สมมติให้มีรายการเปลี่ยนแปลง 2 รายการ คือ C1 และ C2 ที่จะไปทำการแก้ไขข้อมูลชุดเดียวกัน คือ ข้อมูล N

จากข้างต้นรายการ C1 จะเริ่มทำก่อน แต่ยังแก้ไขข้อมูล N ไม่เสร็จ รายการ C2 เริ่มทำแทรกเข้ามา ข้อมูล N จะต้องถูกอ่านเข้ามาก่อนจึงทำการแก้ไขได้ ที่ถูกต้องแล้ว รายการ C1 เกิดขึ้นก่อน รายการ C2 จึงควรนำผลหลังจากที่รายการ C1 ได้ทำการแก้ไขแล้ว มาทำการแก้ไขต่อ
เพื่อให้เห็นชัดเจนขึ้น จะขอสมมติค่าให้ N มีค่าเท่ากัน 10 และ C1 มีค่าเท่ากับ 2 ส่วน C2 มีค่าเท่ากับ 4 ถ้าระบบดังกล่าวทำงานถูกต้อง ก็ควรได้ค่า N มีค่าเป็น 16
แต่รูปที่ 7.3 รายการ C1 จะอ่านค่า N เท่ากับ 10 ไปเก็บที่บัฟเฟอร์ แล้วรายการ C2 ก็จะอ่านค่า N ซึ่งเท่ากับ 10 เช่นเดียวกัน รายการ C1 จะเปลี่ยนแปลงค่า N เป็น 10+2 =12 และรายการ C2 ก็จะเปลี่ยนแปลงค่า N เป็น 10+4=14 ทำให้สรุปค่า เท่ากับ 14 แทนที่ N จะมีค่าเท่ากับ 16 

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