Back to Home

DataBase System

Lesson123456791012131415

Lesson 11 : Recovery and Concurrency Control



Lesson Plan
Section No.
Section 1
Section 2
Test
PDF file
PPT File


<<Prev pageCourse MapNext page>>

Print content of this page
Save content of this page

 

ประเภทของการเกิดความขัอข้อง (Failare)

1.ความหมายของการฟื้นสภาพ

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

2.ประเภทของการเกิดความขัดข้อง

ความขัดข้องที่เกิดขึ้นกับระบบนั้นมีหลายประการ ประเภทของความขัดข้องจำแนก (type of failures) ได้เป็น 3 ลักษณะ คือ ความขัดข้องของทรานแซกชัน ความขัดข้องของระบบ และความขัดข้องของสื่อข้อมูล

2.1 ความขัดข้องของระบบ (system failures) เป็นความขัดข้องที่จะเกิดผลกระทบต่อทรานแซกชันทั้งหมด หรือเกือบทั้งหมดที่กำลังดำเนินการอยู่ ความผิดพลาดของระบบปฏิบัติการ ทำให้ระบบไม่สามารถทำงานต่อไปได้ จำเป็นต้องปิดระบบคอมพิวเตอร์และเปิดเครื่องใหม่อีกครั้ง(restart) ซึ่งจะมีผลกับทุกทรานแซกชันที่กำลังดำเนินอยู่ แต่ไม่ทำลายฐานข้อมูลที่อยู่ในดิสก์ เรียกความขัดข้องลักษณะนี้ว่า ซอฟต์แครช (Soft crash) โดยข้อมูลที่บันทึกในฐานข้อมูลจะไม่สูญหาย แต่ข้อมูลที่อยู่ในหน่วยความจำหลักซึ่งอยู่ระหว่างการทำงานและยังไม่ได้บันทึกจะสูญหายไปได้

2.2 ความขัดข้องของทรานแซกชัน (transaction failures) ความขัดข้องลักษณะนี้จะมีผลกระทบเฉพาะทรานแซกชันที่มีความขัดข้องเกิดขึ้นเท่านั้น ความขัดข้องของทรานแซกชันมี 2 ลักษณะ คือ

1) ความขัดข้องที่สามารถป้องกันได้โดยการตรวจสอบภายในโปรแกรม เช่น ทรานแซกชันการโอนเงิน ถ้ายอดเงินโอนมีค่ามากกว่ายอดเงินที่มีอยู่ในบัญชี เมื่อโปรแกรมตรวจพบจะแสดงข้อความผิดพลาด อาทิ “ยอดเงินไม่เพียงพอ (insufficient fund)” ซึ่งลักษณะนี้ต้องทำการยกเลิกการเปลี่ยนแปลงต่าง ๆ โดยปรับข้อมูลให้เป็นค่าเดิมเมื่อเริ่มต้น หรือ ผู้เขียนโปรแกรมกำหนดขอบเขตของทรานแซกชันไม่ถูกต้อง ความขัดข้องดังกล่าวสามารถป้องกันได้โดยผู้เขียนโปรแกรมต้องตรวจสอบความถูกต้องภายในโปรแกรมให้ครอบคลุมทุกกรณีที่มีโอกาสจะละเมิดกฎควบคุมความถูกต้อง และต้องกำหนดขอบเขตของทรานแซกชันให้ถูกต้อง

2) ความขัดข้องที่ไม่สามารถป้องกันได้โดยการตรวจสอบภายในโปรแกรม เช่น การล้น (overflow) เกินพื้นที่ในการทำงาน ซึ่งทำให้มีเนื้อที่ไม่เพียงพอต่อการปฎิบัติการของทรานแซกชัน ซึ่งอาจก่อให้เกิดความผิดพลาดแก่ทรานแซกชันได้

2.3 ความขัดข้องของสื่อข้อมูล (media failures) เป็นความขัดข้องที่จะเกิดผลกระทบต่อทรานแซกชันทั้งหมด หรือเกือบทั้งหมดที่กำลังดำเนินการอยู่ เช่น หัวอ่านกระทบกับแผ่นดิสก์ หรือตัวควบคุมการทำงานของดิสก์ (disk controller) พัง ความขัดข้องของสื่อข้อมูลจะมีผลทำลายฐานข้อมูล หรือบางส่วนของฐานข้อมูล และมีผลกระทบต่อทรานแซกชันที่กำลังใช้งานฐานข้อมูลนั้นอยู่ เรียกความขัดข้องลักษณะนี้ว่าว่า ฮาร์ดแครช (hard crash)

3.วิธีการฟื้นสภาพ

การแก้ปัญหาความขัดข้องต่างๆ จะใช้ ไฟล์ประวัติ (log file) เข้ามาช่วยในการฟื้นสภาพ ซึ่งเรียกวิธีนี้ว่า การฟื้นสภาพแบบล็อกเบส (log-based recovery) มีหลักการ คือ การปฏิบัติการของทรานแซกชันเกี่ยวกับการบันทึก (write operation) จะต้องบันทึก (write) ไว้ในไฟล์ประวัติเสมอ เพื่อบอกถึงสถานะของข้อมูลและสถานะของทรานแซกชัน

3.1 รายละเอียดของไฟล์ประวัติ (logfile) จะประกอบด้วยสิ่งต่าง ๆ ดังนี้

· ชื่อทรานแซกชัน (tranasaction name) คือ ชื่อของทรานแซกชันที่กระทำการบันทึก (write operation)

· ชื่อเดตาไอเท็ม (data item name) คือ ชื่อของรายการข้อมูลที่ถูกบันทึก

· ค่าเก่า (old value) คือ ค่าเก่าของเดตาไอเท็มก่อนการบันทึก

· ค่าใหม่ (new value) คือ ค่าใหม่ของเดตาไอเท็มหลังการบันทึก

3.2 วิธีการฟื้นสภาพ เนื่องจากการฟื้นสภาพแบบล็อกเบส จะต้องปฏิบัติตามกฎเกณฑ์การบันทึก (write-ahead protocal) โดยเรคอร์ดประวัติจะต้องบันทึก (write) ลงไฟล์ประวัติก่อนเสมอ จึงจะยอมให้มีการบันทึกข้อมูลจากที่พักข้อมูลชั่วคราว (buffer) ลงฐานข้อมูลได้ ด้วยกฎเกณฑ์นี้ทำให้เราสามารถที่จะยกเลิกหรือทำซ้ำการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นกับฐานข้อมูลได้โดยใช้ค่าเก่าหรือค่าใหม่ที่เก็บไว้ไฟล์ประวัติ (log file) การฟื้นสภาพมี 3 วิธี ดังนี้ คือ การยกเลิก การทำซ้ำ และจุดตรวจสอบ ซึ่งความขัดข้องบางกรณีอาจใช้เพียงวิธีใดวิธีหนึ่ง หรืออาจจะใช้ทั้ง 2 วิธี หรือใช้ทั้ง 3 วิธีร่วมกันได้

1) การยกเลิก (UNDO) คือ การยกเลิกสิ่งที่ทำมาแล้วสำหรับทรานแซกชันที่กำลังทำงานอยู่แล้วเกิดความขัดข้องขึ้นระหว่างการดำเนินงานก่อนที่จะคอมมิต (COMMIT) ลักษณะนี้จะยกเลิกการกระทำที่ได้ทำมาแล้วทั้งหมด

2) การทำซ้ำ (REDO) คือ การทำซ้ำสำหรับทรานแซกชันที่ทำงานเสร็จสมบูรณ์แล้ว (COMMIT) แล้ว แต่ยังไม่มีการเคลื่อนย้ายข้อมูลจากที่พักข้อมูลชั่วคราว (buffer) ในหน่วยความจำหลักลงสู่ฐานข้อมูลจริงก็เกิดปัญหาขัดข้องเสียก่อน ซึ่งเสมือนว่าทรานแซกชันยังไม่ทำงาน ดังนั้นจึงต้องกระทำซ้ำทรานแซกชันนั้น

3) จุดตรวจสอบ (CHECKPOINT) คือ เวลา ณ ขณะใดขณะหนึ่งที่ระบบปฏิบัติการ (OS) และระบบจัดการฐานข้อมูล (DBMS) ใช้ทำการเคลื่อนย้ายข้อมูลจากที่พักข้อมูลชั่วคราว (buffer) ในหน่วยความจำหลักลงฐานข้อมูลในดิสก์ โดยจุดตรวจสอบจะถูกบันทึกในไฟล์ประวัติ (log file) เป็นระยะๆ เพื่อประโยชน์ในการฟื้นสภาพ การทำจุดตรวจสอบบ่อยหรือถี่ ๆ ย่อมทำให้การฟื้นสภาพเร็วขึ้นแต่อาจจะลดประสิทธิภาพการทำงานของระบบเพราะต้องติดต่อกับส่วนรับเข้า/ส่งออก (I/O) บ่อย ๆ ดังนั้นช่วงเวลาของการทำจุดตรวจสอบว่าจะเลือกให้ถี่แค่ไหนขึ้นกับลักษณะและปริมาณของทรานแซกชัน เช่น ถ้าเป็นทรานแซกชันขนาดใหญ่ ๆ ก็ไม่ควรให้ถี่นักเพราะต้องเสียเวลาเคลื่อนย้ายข้อมูล การกำหนดจุดตรวจสอบว่าควรจะบ่อยครั้งนั้นอาจมีผลเสียคือถ้าจุดตรวจสอบถี่ (checkpoint time หรือ Tc) จะทำให้การฟื้นสภาพเร็วขึ้น เพราะสามารถยกเลิก (UNDO) ทำซ้ำ (REDO) ทรานแซกชันที่เกิดข้อขัดข้องได้ในช่วงเวลาของจุดตรวจสอบนั้น โดยไม่ต้องฟื้นสภาพ ณ จุดเริ่มต้นของทรานแซกชัน แต่อาจทำให้เกิดปัญหาคอขวดขึ้น (bottle neck) ขึ้นได้ คือ อาจใช้เวลาในการเคลื่อนย้ายข้อมูลจากหน่วยความจำหลักลงฐานข้อมูลในดิสก์มากกว่าปกติ แต่ถ้าจุดตรวจสอบห่าง (checkpoint time หรือ Tc) อาจทำให้เปลืองเนื้อที่ในหน่วยความจำหลักเพราะต้องใช้ที่พักข้อมูลชั่วคราว (buffer) ขนาดใหญ่ในการเก็บข้อมูลจำนวนมากที่ยังไม่ได้เคลื่อนย้ายลงฐานข้อมูลในดิสก์

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

 


 

Last Updated: 12/13/2001 11:20:36 AM
© โครงการเครือข่ายสารสนเทศเพื่อพัฒนาการศึกษา ทบวงมหาวิทยาลัย