Transaction Management © Pearson Education Limited 1995, 2005
Transaction คือ การกระทำใด ๆ ของ user program ใน DBMS ที่ใช้งานกลุ่มคำสั่งปฏิบัติงานที่ execute ข้อมูลในฐานข้อมูล โดยอาจเป็นได้ทั้งการอ่าน การเขียน การปรับปรุงหรือการลบข้อมูลในฐานข้อมูล เป็นหน่วยของการทำงานที่กระทำกับข้อมูลในฐานข้อมูล เพื่อเปลี่ยนสถานะของข้อมูลจากสถานะหนึ่งไปสู่อีกสถานะหนึ่ง ภายใน Transaction จะประกอบด้วยชุดของ operation ต่าง ๆ เรียงกันเป็นลำดับ © Pearson Education Limited 1995, 2005
Example Transaction © Pearson Education Limited 1995, 2005
สถานะของ Transaction แบ่งออกเป็น 5 สถานะคือ Active คือสถานะเริ่มต้นการทำงานของ Transaction Partially Committed คือสถานะที่แต่ละการกระทำของ Transaction ทำงานเสร็จ Commited คือสถานะที่ Transaction ทำงานเสร็จสมบูรณ์ Failed คือสถานะที่มีข้อผิดพลาดเกิดขึ้นกับ Transaction นั้น Aborted คือ สถานะที่เกิดขึ้นหลังจากที่เกิดสถานะ Failed เพื่อหยุดการทำงานของ Transaction © Pearson Education Limited 1995, 2005
State Transition Diagram for Transaction © Pearson Education Limited 1995, 2005
คุณสมบัติของ Transactions 4 คุณสมบัติพื้นฐานของ Transaction (ACID) ได้แก่ : Atomicity ทุกการกระทำใน Transaction จะต้องมีการทำงานที่สมบูรณ์ หรือไม่ก็ต้องยกเลิกทุกการกระทำใน Transaction นั้น Consistency ทุก Transaction จะต้องก่อให้เกิดข้อมูลในฐานข้อมูลที่มีความถูกต้องอยู่เสมอ © Pearson Education Limited 1995, 2005
คุณสมบัติของ Transactions Isolation แต่ละ Transaction จะไม่สามารถเปลี่ยนแปลงข้อมูลได้พร้อมกัน แต่จะต้องรอให้ Transaction ก่อนหน้าที่เรียกใช้ข้อมูลเดียวกัน เปลี่ยนแปลงค่าของข้อมูลเสร็จสิ้นก่อน Durability ข้อมูลที่ Transaction เรียกใช้ จะสามารถเปลี่ยนแปลงค่าจริงในฐานข้อมูลได้ก็ต่อเมื่อ Transaction นั้นมีการทำงานที่เสร็จสมบูรณ์ © Pearson Education Limited 1995, 2005
DBMS Transaction Subsystem © Pearson Education Limited 1995, 2005
การกระทำเพื่อควบคุมการทำงานของTransactions เพื่อกำหนดให้ Transaction มีคุณสมบัติ Atomicity จึงได้มีการกำหนดการกระทำเพื่อควบคุมการทำงานของ Transaction ไว้ดังนี้ Commit Transaction เป็นการกระทำที่กำหนดขึ้นเพื่อแจ้งให้ระบบทราบว่า การทำงานของ Transaction อยู่ในสถานะ Commited Rollback Transaction เป็นการกระทำที่กำหนดขึ้นเพื่อแจ้งให้ระบบทราบว่า การทำงานของ Transaction อยู่ในสถานะ Aborted © Pearson Education Limited 1995, 2005
Concurrency Control คือกระบวนการสำหรับการควบคุมข้อมูลที่ถูกเรียกใช้โดยแต่ละงานให้มีความถูกต้องอยู่เสมอ สาเหตุที่ทำให้ข้อมูลสูญเสียความถูกต้องแบ่งออกได้เป็น 3 สาเหตุดังนี้ Lost update problem Uncommitted dependency problem Inconsistent analysis problem © Pearson Education Limited 1995, 2005
Lost Update Problem สาเหตุนี้เกิดขึ้นในกรณีที่ 2 Transaction หรือมากกว่ามีการเรียกใช้ข้อมูลเดียวกัน แล้วต่างฝ่ายต่างปรับปรุงค่าของข้อมูล โดยไม่มีการป้องกันจากอีกฝ่ายหนึ่ง เช่น T1 ถอนเงิน £10 จากบัญชี balx (เงินในบัญชี = £100) T2 ฝากเงิน £100 เข้าไปในบัญชีเดียวกัน สุดท้ายเงินในบัญชีต้องคงเหลือ = £190 © Pearson Education Limited 1995, 2005
Lost Update Problem Loss of T2’s update avoided by preventing T1 from reading balx until after update. © Pearson Education Limited 1995, 2005
Uncommitted Dependency Problem เกิดขึ้นในกรณีที่ 2 Transaction หรือมากกว่า มีการเรียกใช้ข้อมูลเดียวกัน แต่มี Transaction หนึ่งที่มีการทำงานที่ยังไม่เสร็จสมบูรณ์และเกิดปัญหาขึ้น จึงต้องมีการยกเลิกทุกการกระทำก่อนหน้าของ Transaction นั้น ส่งผลให้ข้อมูลที่ Transaction นั้นเรียกใช้กลับไปมีค่าเดิม และทำให้ Transaction อื่นที่ใช้ข้อมูลเดียวกันได้รับข้อมูลที่ไม่ถูกต้องไปด้วย © Pearson Education Limited 1995, 2005
T4 updates balx to £200 but it aborts, so balx should be back at original value of £100. T3 has read new value of balx (£200) and uses value as basis of £10 reduction, giving a new balance of £190, instead of £90. © Pearson Education Limited 1995, 2005
Uncommitted Dependency Problem ปัญหานี้หลีกเลี่ยงได้โดยการกำหนดให้ T3 จะสามารถอ่านค่า balx ได้ก็ต่อเมื่อ T4 มีสถานะ commits หรือ aborts แล้ว © Pearson Education Limited 1995, 2005
Inconsistent Analysis Problem สาเหตุนี้เกิดขึ้นในกรณีที่ 2 Transaction หรือมากกว่ามีการเรียกใช้ข้อมูลเดียวกัน แต่มี Transaction หนึ่งที่ได้รับข้อมูลที่อยู่ในสถานะที่ไม่ถูกต้องไปใช้งาน ส่งผลให้การประมวลผลของ Transaction นั้นมีการประมวลผลที่ผิดพลาด © Pearson Education Limited 1995, 2005
Inconsistent Analysis Problem T6 is totaling balances of account x (£100), account y (£50), and account z (£25). Meantime, T5 has transferred £10 from balx to balz, so T6 now has wrong result (£10 too high). © Pearson Education Limited 1995, 2005
Inconsistent Analysis Problem Problem avoided by preventing T6 from reading balx and balz until after T5 completed updates. © Pearson Education Limited 1995, 2005
Schedule เป็นแนวทางหนึ่งในการรักษาความถูกต้องให้กับข้อมูล คือ การกำหนดลำดับการทำงานให้แต่ละ Transaction ที่มีการเรียกใช้ข้อมูลพร้อม ๆ กัน ซึ่งเรียกว่า Schedule ใช้กำหนดลำดับก่อนหลังในการเรียกใช้ข้อมูลให้กับแต่ละ Transaction จะช่วยทำให้ข้อมูลที่แต่ละ Transaction นำไปใช้มีความถูกต้องอยู่เสมอ © Pearson Education Limited 1995, 2005
รูปแบบของ Schedule มี 2 รูปแบบคือ Serial Schedule Concurrent Schedule (Nonserial Schedule) © Pearson Education Limited 1995, 2005
Serial Schedule เป็นการกำหนดลำดับการทำงานให้กับแต่ละ Transaction โดยใช้หลักของการทำทีละงาน Transaction หนึ่งจะสามารถทำงานได้ ก็ต่อเมื่ออีก Transaction หนึ่งทำงานจนเสร็จสมบูรณ์แล้ว © Pearson Education Limited 1995, 2005
Concurrent Schedule เป็นการกำหนดลำดับการทำงานให้กับแต่ละ Transaction โดยการแบ่งแต่ละ Transaction ออกเป็นส่วน ๆ แล้วจึงนำแต่ละส่วนมาทำงานสลับกันไป อาจก่อให้เกิดปัญหาทางด้านความถูกต้องของข้อมูลได้ ในกรณีที่ถ้า 2 Transaction มีการนำข้อมูลตัวเดียวกันไปประมวลผล แล้วบันทึกผลที่ได้ลงในฐานข้อมูลในเวลาที่ต่างกัน © Pearson Education Limited 1995, 2005
Examples of Schedule © Pearson Education Limited 1995, 2005
Serializability คือ คุณสมบัติของการจัดลำดับการทำงานให้กับ Transaction ในแบบ Concurrency Schedule ที่สามารถควบคุมให้ผลลัพธ์ที่ได้มีผลเช่นเดียวกับการจัดลำดับการทำงานให้กับ Transaction ในแบบ Serial Schedule © Pearson Education Limited 1995, 2005
Non-conflict serializable schedule © Pearson Education Limited 1995, 2005
View Serializable schedule © Pearson Education Limited 1995, 2005
Concurrency Control Techniques เมื่อเกิดภาวะพร้อมกันในระบบ DBMS จะมีเทคนิคในการจัดเรียงลำดับการทำงานของแต่ละ Transaction แบ่งออกเป็น 2 ประเภทหลักคือ การควบคุมภาวะพร้อมกันด้วยการล็อก (Locking) การควบคุมภาวะพร้อมกันโดยไม่ใช้วิธีการล็อก (Without Locking) © Pearson Education Limited 1995, 2005
การควบคุมภาวะพร้อมกันด้วยการล็อก Locking เป็นการกำหนดให้สถานะของ Transaction ที่ต้องการใช้งานอยู่ในสถานะล็อก เพื่อป้องกัน Transaction อื่น ๆ เข้ามาใช้งานข้อมูลนั้นจนกว่าข้อมูลที่อยู่ในสถานะล็อกนั้นทำงานเสร็จสมบูรณ์และปลดล็อก เมื่อข้อมูลอยู่ในสถานะปลดล็อก Transaction อื่น ๆ จึงสามารถนำข้อมูลไปใช้งานต่อได้ © Pearson Education Limited 1995, 2005
พื้นฐานการล็อก ประกอบด้วย Read Lock Write Lock ถ้าทรานแซกชันใด ๆ มีการ write lock ข้อมูล จะสามารถทำได้ทั้งการอ่านและการอัปเดต © Pearson Education Limited 1995, 2005
Type of Locks แบ่งออกเป็น 2 ชนิดด้วยกัน Shared Locks Exclusive Locks © Pearson Education Limited 1995, 2005
Shared Locks เป็นการล็อกที่อนุญาตให้ทรานแซกชันอื่น ๆ สามารถทำการอ่านเรคอร์ดต่าง ๆ ได้ ในขณะที่จะไม่อนุญาตให้ทำการอัปเดตข้อมูลอย่างเด็ดขาด ผู้ใช้งานอื่น ๆ ยังสามารถอ่านข้อมูลต่าง ๆ ที่ถูกล็อกได้ แต่จะไม่อนุญาตให้มีการอัปเดตข้อมูล ซึ่งก็คือการ read lock นั่นเอง © Pearson Education Limited 1995, 2005
Exclusive Locks เป็นการล็อกที่ไม่อนุญาตให้ทรานแซกชันอื่น ๆ ใช้ข้อมูลที่ถูกล็อกอยู่ ข้อมูลจะถูกใช้งานได้เพียงคนเดียวในขณะนั้น ผู้ใช้งานอื่น ๆ ที่ต้องการใช้งานจะไม่สามารถทำการอ่านและอัปเดตข้อมูลที่ถูกล็อกได้จนกว่าจะปลดล็อก ซึ่งก็คือการ write lock นั่นเอง © Pearson Education Limited 1995, 2005
Two-Phase Locking (2PL) เป็นวิธีที่นำแนวคิดแบบล็อกมาจัดลำดับการทำงานของแต่ละ Transaction ให้อยู่ในรูปแบบ Serializability โดยกำหนดให้ Transaction มีการทำงานที่แบ่งออกเป็น 2 ระยะด้วยกันคือ Growing phase : เป็นระยะที่ทรานแซกชันทำการล็อกข้อมูลอย่างเดียว โดยไม่ปล่อยล็อก Shrinking phase : เป็นระยะที่ทรานแซกชันปล่อยล็อกข้อมูลอย่างเดียว โดยไม่สนใจการ ล็อกข้อมูลใหม่ © Pearson Education Limited 1995, 2005
Two-Phase Locking (2PL) เมื่อแต่ละ Transaction เริ่มต้นทำงานจะเข้าสู่ระยะ Growing ซึ่ง Transaction จะล็อกข้อมูลที่ต้องใช้งาน โดยไม่ปล่อยล็อกจนกว่า Transaction นั้นจะทำงานเสร็จ จึงจะทำงานในระยะ Shrinking เพื่อปล่อยล็อกข้อมูลต่าง ๆ ซึ่งการกำหนดระยะเวลาของการล็อกที่แยกออกจากกันจะทำให้ในแต่ละ Transaction ไม่สามารถเรียกใช้ข้อมูลที่ถูกเรียกใช้โดย Transaction อื่นได้ © Pearson Education Limited 1995, 2005
Preventing Lost Update Problem using 2PL © Pearson Education Limited 1995, 2005
Preventing Uncommitted Dependency Problem using 2PL © Pearson Education Limited 1995, 2005
Preventing Inconsistent Analysis Problem using 2PL © Pearson Education Limited 1995, 2005
Cascading Rollback © Pearson Education Limited 1995, 2005
Locking Level ระดับของการล็อกมี 4 ระดับดังนี้ Database Locking Table Locking Record Locking Field Locking © Pearson Education Limited 1995, 2005
Database Locking เป็นการล็อกทั้งฐานข้อมูล เหมาะสมกับการปฏิบัติงานที่มีการประมวลผลแบบแบตซ์ (batch processing) ขณะที่ทำการประมวลผลอยู่ ฐานข้อมูลทั้งระบบจะถูกล็อกไม่ให้ใครคนอื่นสามารถใช้งานได้เลยจนกว่าจะปลดล็อก © Pearson Education Limited 1995, 2005
Table Locking เป็นการล็อกรีเลชัน โดยจะทำการล็อกตารางใดตารางหนึ่งที่ต้องการ ส่งผลให้ผู้ใช้คนอื่น ๆ ไม่สามารถอ่านเรคอร์ดของตารางนั้นได้ จนกว่าจะมีการปลดล็อกตาราง © Pearson Education Limited 1995, 2005
Record Locking เป็นการล็อกข้อมูลบางเรคอร์ดหรือบางแถวในตาราง แถวที่ถูกล็อก ส่งผลให้ผู้ใช้คนอื่นไม่สามารถเข้ามาใช้งานได้จนกว่าเรคอร์ดนั้นจะถูกปลดล็อก เหมาะกับงานที่ต้องการปรับปรุงข้อมูลบางเรคอร์ดที่ต้องการ © Pearson Education Limited 1995, 2005
Field Locking เป็นการล็อกแอตตริบิวท์หรือคอลัมน์ที่มักจะถูกใช้งานหรือปรับปรุงบ่อย ๆ โดยผู้ใช้คนอื่นยังสามารถใช้งานข้อมูลต่าง ๆ ได้ยกเง้นแอตตริบิวท์ที่ล็อกอยู่ เหมาะกับการนำมาใช้กับการล็อกแอตตริบิวท์ที่มักจะมีการเปลี่ยนแปลงค่าอยู่เสมอ © Pearson Education Limited 1995, 2005
DeadLock ภาวะติดตาย เกิดขึ้นจากการที่ทรานแซกชันตั้งแต่ 2 ทรานแซกชันหรือมากกว่าทำการล็อกข้อมูลที่ใช้งาน โดยในแต่ละทรานแซกชันต่างรอใช้งานข้อมูลของทรานแซกชันอื่นที่ใช้งานอยู่ จึงทำให้ไม่สามารถทำการประมวลผลต่อได้ หรือที่เรียกว่าเกิดภาวะติดตายขึ้น © Pearson Education Limited 1995, 2005
Deadlock © Pearson Education Limited 1995, 2005
การแก้ไข DeadLock ทำการสละ Transaction หนึ่งด้วยการปลด Lock Transaction นั้นออกจากลูป เพื่อให้ Transactionอื่นสามารถทำงานต่อได้ ระบบจะต้องค้นหาวงจรที่ก่อให้เกิด Deadlock นั้น แล้วเลือก Transaction หนึ่งในวงจร Deadlock นั้นมาทำการ Rollback เพื่อปลดปล่อย Lock ทั้งหมดที่ Transaction นั้นได้ทำไว้ และปล่อยให้ Transaction อื่นทำงานต่อไป Transaction ที่ถูกเลือกมาทำ Rollback จะถูกเรียกว่า “victim” © Pearson Education Limited 1995, 2005
การควบคุมภาวะพร้อมกันโดยไม่ใช้วิธีการล็อก Without Locking มี 2 วิธีคือ Optimistic Concurrency Control Timestamp-Based Concurrency Control
Optimistic Concurrency Control แนวคิดนี้จะอนุญาตให้ Transaction สามารถ execute ได้ตามปกติโดยไม่มีการตรวจสอบล่วงหน้า ซึ่งแต่ละ Transaction จะมีพื้นที่เป็นของตนเอง (Private Workspace) แต่จะมีการตรวจสอบก่อนที่จะบันทึกลงในฐานข้อมูลจริง
Optimistic Concurrency Control การตรวจสอบจะพิจารณาจาก “Transaction นั้นมีการทำงานที่ไม่เป็นไปตามลำดับ และทำให้เกิดการขัดกันกับ Transaction อื่นหรือไม่” ถ้ามีการขัดกัน จะทำการเริ่มต้นการทำงานของ Transaction นั้นใหม่ แต่ถ้าไม่มีการขัดกัน จะนำข้อมูลใน Private Workspace นี้บันทึกลงในฐานข้อมูลต่อไป
วิธี Optimistic Concurrency Control ประกอบด้วย 3 ขั้นตอน Read : ขั้นตอนการอ่าน Validation : ขั้นตอนการตรวจสอบ Write : ขั้นตอนการบันทึก
วิธี Optimistic Concurrency Control Read Transaction จะทำการอ่านข้อมูลจากฐานข้อมูล และทำการเขียนลงใน Private Workspace โดย Transaction อื่นไม่สามารถเข้ามาข้องเกี่ยวได้
วิธี Optimistic Concurrency Control Validation DBMS จะทำการตรวจสอบลำดับการทำงานของแต่ละ Transaction โดยพิจารณาจาก Transaction ที่มีการยืนยันความสำเร็จในการทำงานด้วยคำสั่ง commit แล้ว DBMS จะทำการตรวจสอบความเป็นไปได้ในการขัดกันกับ Transaction อื่น ถ้าเกิดการขัดกัน Transaction นั้นจะถูกยกเลิก และ Private Workspace จะถูก Clear และเริ่มต้นการทำงานใหม่
วิธี Optimistic Concurrency Control Write ในกรณีที่ไม่เกิดปัญหาการขัดกันระหว่าง Transaction ข้อมูลที่อยู่ใน Private Workspace จะถูกบันทึกลงในฐานข้อมูล
Timestamp-Based Concurrency Control วิธีนี้ DBMS จะเป็นตัวกำหนดลำดับของแต่ละ Transaction ในการเข้าทำงาน โดยเรียงตามลำดับการเกิดก่อนหลังของแต่ละ Transaction
Timestamp-Based Concurrency Control การกำหนดค่า Timestamp ให้กับแต่ละ Transaction ทำได้ดังนี้ ใช้เวลา system clock จะนำค่าเวลาระบบเป็นตัวแปรเก็บค่า Timestamp เพื่อใช้กำหนดลำดับที่ของแต่ละ Transaction ใช้ตัวแปร counter โดยตัวแปร counter จะเป็นตัวนับเพิ่มทีละ 1 เพื่อนำมาเป็นตัวกำหนดลำดับที่ให้กับแต่ละ Transaction
ลักษณะของเวลาที่บันทึกคู่กับข้อมูล W-Timestamp เป็นเวลาล่าสุดที่ข้อมูลถูกเปลี่ยนแปลงค่าโดย Transaction ใด ๆ R-Timestamp เป็นเวลาล่าสุดที่ข้อมูลถูกนำไปใช้งานโดย Transaction ใด ๆ เวลาทั้ง 2 ส่วนจะถูกนำไปใช้พิจารณาเปรียบเทียบกับกรณีต่าง ๆ
กรณีที่ Transaction มีการอ่านข้อมูล ถ้าเวลาที่ Transaction A เริ่มต้นทำงานเกิดขึ้นก่อนเวลา W-Timestamp ของข้อมูลที่ Transaction A นั้นนำมาใช้งาน Transaction A ต้องอ่านข้อมูลนั้นขึ้นมาใหม่ หรือเริ่มการทำงาน Transaction A ใหม่ เนื่องจากในขณะที่ Transaction A กำลังทำงาน ข้อมูลนั้นได้ถูกเปลี่ยนแปลงค่าโดย Transaction อื่น ส่งผลให้ค่าของข้อมูลที่ Transaction A เก็บอยู่ไม่ใช่ค่าล่าสุด
กรณีที่ Transaction มีการอ่านข้อมูล ถ้าเวลาที่ Transaction A เริ่มต้นทำงานเกิดขึ้นหลังจากหรือเวลาดียวกับเวลา W-Timestamp ของข้อมูลที่ Transaction A อ่านมาแล้ว แสดงว่าข้อมูลที่อ่านมานั้น สามารถนำไปประมวลผลได้ แต่จะต้องบันทึกเวลา R-Timestamp ให้กับข้อมูลนั้นใหม่
กรณีที่ Transaction มีการบันทึกข้อมูล ถ้าเวลาที่ Transaction A เริ่มต้นทำงานเกิดขึ้นก่อนเวลา R-Timestamp ของข้อมูลที่ Transaction A นั้นอ่านมาแล้ว แสดงว่าข้อมูลนั้นได้ถูก Transaction อื่นอ่านไปใช้งานเช่นเดียวกัน จึงไม่สามารถเปลี่ยนแปลงค่าของข้อมูลนั้นได้ ในกรณีนี้ให้เริ่มต้นการทำงาน Transaction A ใหม่ เนื่องจากข้อมูลถูกที่ Transaction A เปลี่ยนแปลงค่าอาจถูก Transaction อื่นที่นำข้อมูลเดียวกันนั้นไปใช้งานเปลี่ยนแปลงค่าทับค่าเดิมได้
กรณีที่ Transaction มีการบันทึกข้อมูล ถ้าเวลาที่ Transaction A เริ่มต้นทำงานเกิดขึ้นก่อนเวลา W-Timestamp ของข้อมูลที่ Transaction A นั้นอ่านมาแล้ว แสดงว่าระหว่างที่ Transaction A ทำงาน ข้อมูลนั้นได้ถูก Transaction อื่นเปลี่ยนแปลงค่าของข้อมูลนั้นไปแล้ว ดังนั้น Transaction A จึงไม่สามารถเปลี่ยนแปลงค่าของข้อมูลนั้นได้ ในกรณีนี้ให้เริ่มต้นการทำงาน Transaction A ใหม่ เนื่องจากค่าที่ Transaction A เปลี่ยนแปลงจะทำให้ค่าของข้อมูลเดียวกันที่ Transaction ก่อนหน้านี้เปลี่ยนแปลงไว้สูญหาย
กรณีที่ Transaction มีการบันทึกข้อมูล ส่วนกรณีอื่น ๆ ที่นอกเหนือจาก 2 กรณีที่ผ่านมา ให้ Transaction ทำการเปลี่ยนแปลงค่าของข้อมูลนั้นได้ แต่จะต้องกำหนดเวลา W-Timestamp ให้กับข้อมูลนั้นใหม่
Basic Timestamp Ordering © Pearson Education Limited 1995, 2005
Database Recovery เป็นกระบวนการเรียกคืนฐานข้อมูลให้กับมาสู่สภาวะเดิมที่สามารถใช้งานได้ ในกรณีที่เกิดเหตุขัดข้องบางประการ ไม่ว่าจะเป็นความผิดพลาดจากผู้กระทำ ระบบคอมพิวเตอร์หรือ ความขัดข้องจากระบบไฟฟ้า © Pearson Education Limited 1995, 2005
Types of Failures ระบบล่ม ความขัดข้องจากสื่อบันทึกข้อมูล ความผิดพลาดจากโปรแกรมแอปพลิเคชัน ความขัดข้องจากภัยธรรมชาติ การไม่ดูแลเอาใจใส่ การก่อวินาศกรรม © Pearson Education Limited 1995, 2005
ความจำเป็นในการกู้ข้อมูล การจัดเก็บข้อมูลในคอมพิวเตอร์จะต้องใช้กับอุปกรณ์ต่าง ๆ หลายประเภท เช่น หน่วยความจำ ดิสก์ เทปแม่เหล็ก ในขณะที่ข้อมูลผ่านอุปกรณ์เหล่านี้อาจมีข้อผิดพลาดเกิดขึ้นได้ จึงต้องคำนึงถึงประเภทของอุปกรณ์ที่ใช้จัดเก็บข้อมูลขณะที่เกิดข้อผิดพลาดขึ้นด้วย © Pearson Education Limited 1995, 2005
ประเภทของหน่วยความจำสำรอง Volatile Storage Nonvolatile Storage Stable Storage © Pearson Education Limited 1995, 2005
ประเภทของหน่วยความจำสำรอง Volatile Storage เป็นอุปกรณ์ที่จะจัดเก็บข้อมูลได้ก็ต่อเมื่อมีกระแสไฟฟ้า ในกรณีที่ไม่มีกระแสไฟฟ้าข้อมูลที่จัดเก็บอยู่ในอุปกรณ์จะหายไป อุปกรณ์ประเภทนี้จะใช้ในการจัดเก็บข้อมูลชั่วคราว เช่น RAM, Cache Memory © Pearson Education Limited 1995, 2005
ประเภทของหน่วยความจำสำรอง Nonvolatile Storage เป็นอุปกรณ์ที่สามารถจัดเก็บข้อมูลได้โดยไม่ต้องใช้กระแสไฟฟ้า เช่น Disk ปัญหาที่มักเกิดกับอุปกรณ์นี้ คือ Disk Crash © Pearson Education Limited 1995, 2005
ประเภทของหน่วยความจำสำรอง Stable Storage เป็นอุปกรณ์ที่ไม่ต้องอาศัยกระแสไฟฟ้าในการจัดเก็บข้อมูล มักจะนำมาใช้ในการสำรองข้อมูลมากกว่าในการประมวลผล เช่น เทปแม่เหล็ก © Pearson Education Limited 1995, 2005
ประเภทของความผิดพลาด Logical Error System Error System Crash Disk Failure
ประเภทของความผิดพลาด Logical Error เป็นความผิดพลาดที่เกิดจากมีขั้นตอนการทำงานที่ไม่ถูกต้อง หรือจากตัวข้อมูลที่ไม่สามารถรองรับการประมวลผลที่เกิดขึ้นได้ เช่น การกำหนดขนาดของฟิลด์ไม่เพียงพอต่อการจัดเก็บข้อมูล
ประเภทของความผิดพลาด System Error เป็นความผิดพลาดที่เกิดจากการทำงานตัวระบบที่ไม่ถูกต้อง หรือไม่ครบถ้วนพอ เช่น ปัญหาที่เกิดจากการจัดลำดับการทำงานของโปรแกรมต่าง ๆ ไม่ดีพอ และส่งผลให้เกิดปัญหาด้าน Deadlock ของข้อมูลขึ้น
ประเภทของความผิดพลาด System Crash เป็นความผิดพลาดต่าง ๆ ที่เกิดขึ้นอุปกรณ์ที่ใช้จัดเก็บข้อมูลประเภท Volatile Storage เช่น ปัญหาทางด้านกระแสไฟฟ้าที่ไม่สม่ำเสมอ ซึ่งส่งผลให้ข้อมูลที่จัดเก็บอยู่ในหน่วยความจำสูญหายไป
ประเภทของความผิดพลาด Disk Failure เป็นความผิดพลาดต่าง ๆ ที่เกิดขึ้นอุปกรณ์ที่ใช้จัดเก็บข้อมูลประเภท Nonvolatile Storage เช่น ปัญหาทางด้าน Disk Crash ซึ่งส่งผลให้ข้อมูลที่จัดเก็บอยู่ใน Disk บางส่วนสูญหายไป
การกู้ข้อมูลจาก Volatile Storage มี 3 แบบคือ การกู้ข้อมูลแบบ Log-Based การกู้ข้อมูลแบบ Shadow Paging การกู้ข้อมูลแบบ Checkpoints
การกู้ข้อมูลแบบ Log-Based เป็นการกู้ข้อมูลที่อาศัยข้อมูลจาก Log File ซึ่งเป็นแฟ้มข้อมูลที่ใช้บันทึกการกระทำต่าง ๆ ใน Transaction ที่ก่อให้เกิดการเปลี่ยนแปลงค่าของข้อมูล
Sample Log File © Pearson Education Limited 1995, 2005
รูปแบบรายการที่บันทึกใน Log File แบ่งได้เป็น 3 ประเภทคือ Transaction Start เป็นรายการที่จะถูกบันทึกลงใน Log File เมื่อ Transaction เริ่มต้นทำงาน Transaction Commit เป็นรายการที่จะถูกบันทึกลงใน Log File เมื่อ Transaction ทำงานเสร็จ
รูปแบบรายการที่บันทึกใน Log File Update Activity เป็นรายการที่จะถูกบันทึกลงใน Log File ทุกครั้ง เมื่อการกระทำนั้นก่อให้เกิดการเปลี่ยนแปลงค่าของข้อมูล
รูปแบบการบันทึกข้อมูลใน Log File มี 2 รูปแบบคือ Deferred Database Modification ข้อมูลที่ได้จากการประมวลผลจะถูกบันทึกลงในฐานข้อมูลได้ก็ต่อเมื่อ Transaction นั้นทำงานเสร็จเรียบร้อยแล้ว Immediate Database Modification ข้อมูลที่ได้จากการประมวลผลจะถูกบันทึกลงในฐานข้อมูลได้ทันที โดยไม่ต้องรอให้ Transaction นั้นทำงานเสร็จเรียบร้อย
การกู้ข้อมูลจาก Log File Deferred Database Modification จะนำเอาข้อมูลที่บันทึกอยู่ใน Log File ทั้งหมดมาเลือกเฉพาะ Transaction ที่มีการทำงานที่เสร็จสมบูรณ์ ได้แก่ Transaction ที่มีรายการครบทั้ง Start และ Commit เพื่อนำรายการประเภท Update ไปเก็บลงในฐานข้อมูล
การกู้ข้อมูลจาก Log File Immediate Database Modification จะนำเอารายการประเภท Activity ของทุก Transaction ที่บันทึกไว้ใน Log File มาบันทึกลงในฐานข้อมูลใหม่ ถ้า Transaction มีการทำงานที่เสร็จสมบูรณ์ ค่าใหม่ของรายการ Update จะถูกบันทึกลงฐานข้อมูล ถ้า Transaction มีการทำงานที่ไม่สมบูรณ์ ค่าเดิมของขข้อมูลก่อนการประมวลผลในรายการ Update จะถูกบันทึกลงฐานข้อมูลแทน
การกู้ข้อมูลแบบ Shadow Paging เป็นการจัดเก็บข้อมูลเพื่อนำมาใช้ในการกู้ข้อมูล โดยการกำหนดเนื้อที่ใน Disk ไว้สวนหนึ่ง เพื่อใช้ในการทำสำเนาข้อมูลที่จะถูกเรียกใช้ใน Transaction ไว้ก่อนที่ Transaction นั้นจะเริ่มต้นทำงาน ซึ่งเนื้อที่ที่เตรียมไว้สำหรับสำเนาข้อมูลจะเรียกว่า Shadow Page
การกู้ข้อมูลแบบ Shadow Paging ข้อมูลที่อยู่ใน Shadow Page จะไม่สามารถเปลี่ยนแปลงแก้ไขได้ และจะถูกนำมาใช้เมื่อ Transaction ที่ทำงานนั้นมีข้อผิดพลาดเกิดขึ้น โดยการนำข้อมูลใน Shadow Page มาบันทึกทับลงในฐานข้อมูลเดิม ในกรณีที่ Transaction ทำงานสมบูรณ์ ข้อมูลใน Shadow Page จะถูกยกเลิกไป
การกู้ข้อมูลแบบ Checkpoints เป็นการกู้ข้อมูลโดยการใช้ Log File แต่ในการบันทึกข้อมูลของ Log File จะกระทำเป็นช่วงแทน โดยมีการกำหนดจุดเริ่มต้นของ Transaction ที่เริ่มบันทึกรายการลงใน Log File ที่เรียกว่า จุด Checkpoint ไว้ เมื่อเกิดมี Transaction ที่ทำงานไม่สมบูรณ์ ก็จะนำข้อมูลใน Log File ตั้งแต่จุด checkpoint มาประมวลผลใหม่
การกู้ข้อมูลจาก Nonvolatile Storage เริ่มจากการจัดเก็บข้อมูลทั้งหมดเพื่อไว้ใช้ในการกู้ข้อมูล โดยใช้วิธีการสำรองข้อมูล (Backup) ไว้ในอุปกรณ์ประเภท Stable Storage แทน เช่น การสำรองข้อมูลไว้ในเทปแม่เหล็ก ช่วงเวลาในการทำการสำรองข้อมูล ให้พิจารณาจากความสำคัญและปริมาณของข้อมูลที่เกิดขึ้น
การกู้ข้อมูลจาก Nonvolatile Storage การกู้ข้อมูลจะใช้การถ่ายโอนข้อมูลจาก Stable Storage กลับมายัง Nonvolatile Storage ทั้งหมด แล้วจึงนำเฉพาะ Transaction ที่จัดเก็บไว้ใน Log File และมีการทำงานที่เสร็จสมบูรณ์ มาบันทึกค่าของข้อมูลตามค่าที่เก็บไว้ในรายการประเภท Update Activity ลงในฐานข้อมูลใหม่