PowerPoint Template
Download
Report
Transcript PowerPoint Template
LOGO
Chapter 4
DBMS : Transaction Management /
Concurrency Control / Recovery
SUCHADA PUNNOI
Dept. of Computer Science & Information Technology
http://computer.pcru.ac.th/suchada/
1
LOGO
Transaction
2
Transaction
คือ การกระทาใด ๆ ของ user program ใน DBMS ที่ใช้
งานกลุ่มคาสัง่ ปฏิบตั ิงานที่ execute ข้อมูลในฐานข้อมูล โดยอาจ
เป็ นได้ท้ งั การอ่าน การเขียน การปรับปรุ งหรื อการลบข้อมูลใน
ฐานข้อมูล
เป็ นหน่วยของการทางานที่กระทากับข้อมูลในฐานข้อมูล เพื่อเปลี่ยน
สถานะของข้อมูลจากสถานะหนึ่งไปสู่อีกสถานะหนึ่ง
ภายใน Transaction จะประกอบด้วยชุดของ operation
ต่าง ๆ เรี ยงกันเป็ นลาดับ
© Pearson Education Limited 1995, 2005
3
สรุ ป Transaction
หมายถึงโปรแกรมการประมวลผลที่เขียนด้วย High-level
data manipulation language เพื่อเข้าไป
update ข้อมูลในระบบฐานข้อมูล และ DBMS ต้อง
รับประกันว่า เมื่อ transaction ทางานเสร็ จแล้ว จะต้องทาให้
ข้อมูลอยูใ่ นสภาพที่สมบูรณ์ถูกต้อง กล่าวคือถ้าก่อนการ update
ฐานข้อมูลเดิมมีสภาพดีอยูแ่ ล้ว หลังจากการประมวลผลของ
transaction ฐานข้อมูลจะต้องคงสภาพความถูกต้องดังเดิม
© Pearson Education Limited 1995, 2005
4
Example Transaction
© Pearson Education Limited 1995, 2005
5
State Transition Diagram for
Transaction
© Pearson Education Limited 1995, 2005
6
สถานะของ Transaction
แบ่งออกเป็ น 5 สถานะคือ
Active คือสถานะเริ่ มต้นการทางานของ Transaction
Partially Committed คือสถานะที่แต่ละการกระทาของ
Transaction ทางานเสร็ จ
Commited คือสถานะที่ Transaction ทางานเสร็จสมบูรณ์
Failed คือสถานะที่มีขอ้ ผิดพลาดเกิดขึ้นกับ Transaction นั้น
Aborted คือ สถานะที่เกิดขึ้นหลังจากที่เกิดสถานะ Failed เพื่อ
หยุดการทางานของ Transaction
© Pearson Education Limited 1995, 2005
7
Transaction State
8
คุณสมบัตขิ อง Transactions ACID
4 คุณสมบัติพ้นื ฐานของ Transaction (ACID) ได้แก่ :
Atomicity ทุกการกระทาใน Transaction จะต้องมีการทางานที่
สมบูรณ์ หรื อไม่กต็ อ้ งยกเลิกทุกการกระทาใน Transaction นั้น
หมายความวา่ transactions เริ่ มดาเนินการ ต้องดาเนินไปจน
ลุล่วงหมดทุกคาสั่ง หรื อถ้าดาเนินการไม่สาเร็ จลุล่วง transactions
จะต้องทาให้ฐานข้อมูลดูเสมือนหนึ่ งว่าไม่เคยมีการกระทาใด ๆ เกิดขึ้นเลย ค่า
ข้อมูลต่างๆ ยังคงเป็ นค่าเดิมก่อนการประมวลผลของ transactions โดยที่
transactions ต้องถูก roll back กลับไปตั้งต้นไป การ
commit หรื อ roll back นี้จะถูกดาเนินการโดย transactionmanagement component ซึ่ งเป็ นองค์ประกอบหนึ่ง ของ
DBMS
9
คุณสมบัตขิ อง Transactions ACID
DBMS เก็บค่าเก่าของข้อมูลทุกค่าที่ transactions เข้าไป
ดาเนินการ write และถ้า transactions ไม่สามารถประมวลผล
จนเสร็ จสมบูรณ์ (system failure หรื อ program
runtime error...) DBMS จะนาค่าเก่าขึ้นมาฟื้ นสภาพ
ให้กบั ข้อมูล เสมือนหนึ่งว่าไม่เคยมีการประมวลผลใด ๆ เกิดขึ้นกับ
ข้อมูลเหล่านี้เลย ซึ่งเป็ นหน้าที่ของ Recovery manager
© Pearson Education Limited 1995, 2005
10
คุณสมบัตขิ อง Transactions ACID
Consistency ทุก Transaction จะต้องก่อให้เกิดข้อมูลใน
ฐานข้อมูลที่มีความถูกต้องอยูเ่ สมอ DBMS ต้องรับประกันความ
ถูกต้องของข้อมูลในระบบฐานข้อมูลอยูเ่ สมอ ไม่วา่ ก่อน หรื อหลังการ
ประมวลผลของ transaction การรับประกันคุณสมบัติ
consistency นี้ สามารถทาได้โดยระบุกฎเกณฑ์ความคงสภาพ
(Integrity constraint)
© Pearson Education Limited 1995, 2005
11
คุณสมบัตขิ อง Transactions ACID
Isolation แต่ละ Transaction จะไม่สามารถเปลี่ยนแปลงข้อมูล
ได้พร้อมกัน แต่จะต้องรอให้ Transaction ก่อนหน้าที่เรี ยกใช้ขอ้ มูล
เดียวกัน เปลี่ยนแปลงค่าของข้อมูลเสร็ จสิ้ นก่อน ถึงแม้วา่ หลาย ๆ
transactions สามารถเข้าประมวลผลฐานข้อมูลพร้อม ๆ กันได้ ใน
เวลาเดียวกัน (Concurrent execution) และอาจเข้า
ประมวลผลชิ้นข้อมูลเดียวกันด้วย แต่ DBMS ต้องรับประกันใน
การจัดลาดับการเข้าประมวลผลของ transactions เหล่านั้น ให้มี
ลักษณะเสมือนเป็ น serial execution การรับประกันคุณสมบัติ
Isolation เป็ นหน้าที่ความรับผิดชอบของ Concurrencycontrol component หรื อ Scheduler
© Pearson Education Limited 1995, 2005
12
คุณสมบัตขิ อง Transactions ACID
Durability เมื่อ transactions จบสิ้นการประมวลผลอย่าง
สมบูรณ์ ระบบข้อมูลต้องคงสภาพอยูอ่ ย่างนั้น แม้วา่ จะเกิด
system failures ในภายหลัง(คุณสมบัติ durability
ภายหลังการเกิด system failures หมายถึง system
failures ที่มีผลทาให้ขอ้ มูลใน main memory สูญหาย แต่
ไม่กระทบข้อมูลที่บนั ทึกลงบนดิสก์เรี ยบร้อยแล้ว)
© Pearson Education Limited 1995, 2005
13
การกระทาเพือ่ ควบคุมการทางานของTransactions
เพื่อกาหนดให้ Transaction มีคุณสมบัติ Atomicity จึงได้มี
การกาหนดการกระทาเพื่อควบคุมการทางานของ Transaction
ไว้ดงั นี้
Commit Transaction เป็ นการกระทาที่กาหนดขึ้นเพื่อแจ้งให้
ระบบทราบว่า การทางานของ Transaction อยูใ่ นสถานะ
Commited
Rollback Transaction เป็ นการกระทาที่กาหนดขึ้นเพื่อแจ้งให้
ระบบทราบว่า การทางานของ Transaction อยูใ่ นสถานะ Aborted
© Pearson Education Limited 1995, 2005
14
LOGO
Concurrency Control
15
Concurrency Control
Concurrency Control คือการควบคุมสภาวะการใช้งาน
พร้อมกัน
16
Concurrency Control
คือกระบวนการสาหรับการควบคุมข้อมูลที่ถูกเรี ยกใช้โดยแต่ละงาน
ให้มีความถูกต้องอยูเ่ สมอ
สาเหตุที่ทาให้ขอ้ มูลสูญเสี ยความถูกต้องแบ่งออกได้เป็ น 3 สาเหตุ
ดังนี้
Lost update problem
Uncommitted dependency problem
Inconsistent analysis problem
© Pearson Education Limited 1995, 2005
17
Lost Update Problem
สาเหตุน้ ีเกิดขึ้นในกรณี ที่ 2 Transaction หรื อมากกว่ามี
การเรี ยกใช้ขอ้ มูลเดียวกัน แล้วต่างฝ่ ายต่างปรับปรุ งค่าของข้อมูล
โดยไม่มีการป้ องกันจากอีกฝ่ ายหนึ่ง เช่น
T1 ถอนเงิน £10 จากบัญชี balx (เงินในบัญชี = £100)
T2 ฝากเงิน £100 เข้าไปในบัญชีเดียวกัน
สุ ดท้ายเงินในบัญชีตอ้ งคงเหลือ = £190
© Pearson Education Limited 1995, 2005
18
Lost Update Problem
Loss of T2’s update avoided by preventing
T1 from reading balx until after update.
© Pearson Education Limited 1995, 2005
19
Uncommitted Dependency
Problem
เกิดขึ้นในกรณี ที่ 2 Transaction หรื อมากกว่า มีการ
เรี ยกใช้ขอ้ มูลเดียวกัน แต่มี Transaction หนึ่งที่มีการ
ทางานที่ยงั ไม่เสร็ จสมบูรณ์และเกิดปัญหาขึ้น
จึงต้องมีการยกเลิกทุกการกระทาก่อนหน้าของ
Transaction นั้น ส่ งผลให้ขอ้ มูลที่ Transaction
นั้นเรี ยกใช้กลับไปมีค่าเดิม
และทาให้ Transaction อื่นที่ใช้ขอ้ มูลเดียวกันได้รับข้อมูล
ที่ไม่ถูกต้องไปด้วย
© Pearson Education Limited 1995, 2005
20
Uncommitted Dependency
Problem
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
21
Uncommitted Dependency
Problem
ปัญหานี้หลีกเลี่ยงได้โดยการกาหนดให้ T3 จะสามารถอ่านค่า
balx ได้กต็ ่อเมื่อ T4 มีสถานะ commits หรื อ aborts
แล้ว
© Pearson Education Limited 1995, 2005
22
Inconsistent Analysis
Problem
สาเหตุน้ ีเกิดขึ้นในกรณี ที่ 2 Transaction หรื อมากกว่ามีการ
เรี ยกใช้ขอ้ มูลเดียวกัน แต่มี Transaction หนึ่งที่ได้รับข้อมูลที่อยู่
ในสถานะที่ไม่ถูกต้องไปใช้งาน ส่ งผลให้การประมวลผลของ
Transaction นั้นมีการประมวลผลที่ผดิ พลาด
© Pearson Education Limited 1995, 2005
23
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
24
Inconsistent Analysis
Problem
Problem avoided by preventing T6 from
reading balx and balz until after T5
completed updates.
© Pearson Education Limited 1995, 2005
25
Schedule
เป็ นแนวทางหนึ่งในการรักษาความถูกต้องให้กบั ข้อมูล คือ การกาหนด
ลาดับการทางานให้แต่ละ Transaction ที่มีการเรี ยกใช้ขอ้ มูล
พร้อม ๆ กัน ซึ่งเรี ยกว่า Schedule
ใช้กาหนดลาดับก่อนหลังในการเรี ยกใช้ขอ้ มูลให้กบั แต่ละ
Transaction
จะช่วยทาให้ขอ้ มูลที่แต่ละ Transaction นาไปใช้มีความถูกต้อง
อยูเ่ สมอ
© Pearson Education Limited 1995, 2005
26
Examples of Schedule
© Pearson Education Limited 1995, 2005
27
Concurrency Control
Techniques
เมื่อเกิดภาวะพร้อมกันในระบบ DBMS จะมีเทคนิคในการจัด
เรี ยงลาดับการทางานของแต่ละ Transaction เพื่อป้ องกันการ
แย่งชิงข้อมูลที่ประมวลผลยังไม่เสร็ จไปใช้โดย transaction
อื่น โดย DBMSจะมีเทคนิคการควบคุมภาวะพร้อมกันด้วย
การล็อก (Locking)
© Pearson Education Limited 1995, 2005
28
Concurrency Control : Locking
29
Concurrency Control : Locking
Locking เป็ นการกาหนดให้สถานะของ Transaction ที่
ต้องการใช้งานอยูใ่ นสถานะล็อก
เพื่อป้ องกัน Transaction อื่น ๆ เข้ามาใช้งานข้อมูลนั้นจนกว่า
ข้อมูลที่อยูใ่ นสถานะล็อกนั้นทางานเสร็ จสมบูรณ์และปลดล็อก
เมื่อข้อมูลอยูใ่ นสถานะปลดล็อก Transaction อื่น ๆ จึงสามารถ
นาข้อมูลไปใช้งานต่อได้
© Pearson Education Limited 1995, 2005
30
ตัวอย่างกานา Locking มาใช้ งาน
31
พืน้ ฐานการล็อก
ประกอบด้วย
Read Lock
โดยถ้าทรานแซกชันใดมีการ read lock ข้อมูล จะสามารถทาการ
อ่านข้อมูลได้ แต่จะไม่สามารถทาการอัปเดตข้อมูลได้
Write Lock
ถ้าทรานแซกชันใด ๆ มีการ write lock ข้อมูล จะสามารถทาได้ท้ งั
การอ่านและการอัปเดต
© Pearson Education Limited 1995, 2005
32
Type of Locks
แบ่งออกเป็ น 2 ชนิดด้วยกัน
Shared Locks
Exclusive Locks
© Pearson Education Limited 1995, 2005
33
Shared Locks
เป็ นการล็อกที่อนุญาตให้ทรานแซกชันอื่น ๆ สามารถทาการอ่าน เร
คอร์ดต่าง ๆ ได้ ในขณะที่จะไม่อนุญาตให้ทาการอัปเดตข้อมูลอย่าง
เด็ดขาด
ผูใ้ ช้งานอื่น ๆ ยังสามารถอ่านข้อมูลต่าง ๆ ที่ถูกล็อกได้ แต่จะไม่
อนุญาตให้มีการอัปเดตข้อมูล
ซึ่งก็คือการ read lock นัน่ เอง
© Pearson Education Limited 1995, 2005
34
Exclusive Locks
เป็ นการล็อกที่ไม่อนุญาตให้ทรานแซกชันอื่น ๆ ใช้ขอ้ มูลที่ถูกล็อกอยู่
ข้อมูลจะถูกใช้งานได้เพียงคนเดียวในขณะนั้น
ผูใ้ ช้งานอื่น ๆ ที่ตอ้ งการใช้งานจะไม่สามารถทาการอ่านและอัปเดต
ข้อมูลที่ถูกล็อกได้จนกว่าจะปลดล็อก
ซึ่งก็คือการ write lock นัน่ เอง
© Pearson Education Limited 1995, 2005
35
Exclusive & Shared LOCK
36
Two-Phase Locking (2PL)
เป็ นวิธีที่นิยมโดยนาแนวคิดแบบล็อกมาจัดลาดับการทางานของแต่
ละ Transaction ให้อยูใ่ นรู ปแบบ Serializability
โดยกาหนดให้ Transaction มีการทางานที่แบ่งออกเป็ น 2
ระยะด้วยกันคือ
© Pearson Education Limited 1995, 2005
37
Two-Phase Locking (2PL)
เมื่อแต่ละ Transaction เริ่ มต้นทางานจะเข้าสู่ระยะ
Growing ซึ่ง Transaction จะล็อกข้อมูลที่ตอ้ งใช้งาน
โดยไม่ปล่อยล็อกจนกว่า Transaction นั้นจะทางานเสร็ จ จึง
จะทางานในระยะ Shrinking เพื่อปล่อยล็อกข้อมูลต่าง ๆ
ซึ่งการกาหนดระยะเวลาของการล็อกที่แยกออกจากกันจะทาให้ใน
แต่ละ Transaction ไม่สามารถเรี ยกใช้ขอ้ มูลที่ถูกเรี ยกใช้
โดย Transaction อื่นได้
© Pearson Education Limited 1995, 2005
38
Preventing Lost Update Problem using 2PL
© Pearson Education Limited 1995, 2005
39
ตัวอย่ าง การใช้ 2PL แก้ปัญหา Loast Update
Preventing Lost Update Problem using 2PL
40
Preventing Uncommitted Dependency
Problem using 2PL
© Pearson Education Limited 1995, 2005
41
Preventing Inconsistent Analysis
Problem using 2PL
© Pearson Education Limited 1995, 2005
42
Cascading Rollback
© Pearson Education Limited 1995, 2005
43
Locking Level
ระดับของการล็อกมี 4 ระดับดังนี้
Database Locking
Table Locking
Record Locking
Field Locking
© Pearson Education Limited 1995, 2005
44
Database Locking
เป็ นการล็อกทั้งฐานข้อมูล เหมาะสมกับการปฏิบตั ิงานที่มีการ
ประมวลผลแบบแบตซ์ (batch processing)
ขณะที่ทาการประมวลผลอยู่ ฐานข้อมูลทั้งระบบจะถูกล็อกไม่ให้
ใครคนอื่นสามารถใช้งานได้เลยจนกว่าจะปลดล็อก
© Pearson Education Limited 1995, 2005
45
Table Locking
เป็ นการล็อกรี เลชัน โดยจะทาการล็อกตารางใดตารางหนึ่งที่
ต้องการ
ส่งผลให้ผใู้ ช้คนอื่น ๆ ไม่สามารถอ่านเรคอร์ดของตารางนั้นได้
จนกว่าจะมีการปลดล็อกตาราง
© Pearson Education Limited 1995, 2005
46
Record Locking
เป็ นการล็อกข้อมูลบางเรคอร์ดหรื อบางแถวในตาราง
แถวที่ถูกล็อก ส่งผลให้ผใู้ ช้คนอื่นไม่สามารถเข้ามาใช้งานได้
จนกว่าเรคอร์ดนั้นจะถูกปลดล็อก
เหมาะกับงานที่ตอ้ งการปรับปรุ งข้อมูลบางเรคอร์ดที่ตอ้ งการ
© Pearson Education Limited 1995, 2005
47
Field Locking
เป็ นการล็อกแอตตริ บิวท์หรื อคอลัมน์ที่มกั จะถูกใช้งานหรื อ
ปรับปรุ งบ่อย ๆ
โดยผูใ้ ช้คนอื่นยังสามารถใช้งานข้อมูลต่าง ๆ ได้ยกเว้นแอทริ บิวท์
ที่ลอ็ กอยู่
เหมาะกับการนามาใช้กบั การล็อกแอทริ บิวท์ที่มกั จะมีการ
เปลี่ยนแปลงค่าอยูเ่ สมอ
© Pearson Education Limited 1995, 2005
48
ภาวะติดตาย Dead Lock
49
DeadLock
ภาวะติดตาย เกิดขึ้นจากการที่ทรานแซกชันตั้งแต่ 2 ทรานแซก
ชันหรื อมากกว่าทาการล็อกข้อมูลที่ใช้งาน
โดยในแต่ละทรานแซกชันต่างรอใช้งานข้อมูลของทรานแซกชันอื่น
ที่ใช้งานอยู่ จึงทาให้ไม่สามารถทาการประมวลผลต่อได้ หรื อที่
เรี ยกว่าเกิดภาวะติดตายขึ้น
© Pearson Education Limited 1995, 2005
50
Dead Lock
51
Deadlock
© Pearson Education Limited 1995, 2005
52
การแก้ไข DeadLock
ทาการสละ Transaction หนึ่งด้วยการปลด Lock
Transaction นั้นออกจากลูป เพื่อให้ Transactionอื่น
สามารถทางานต่อได้
ระบบจะต้องค้นหาวงจรที่ก่อให้เกิด Deadlock นั้น แล้วเลือก
Transaction หนึ่งในวงจร Deadlock นั้นมาทาการ
Rollback เพื่อปลดปล่อย Lock ทั้งหมดที่
Transaction นั้นได้ทาไว้ และปล่อยให้ Transaction
อื่นทางานต่อไป
Transaction ที่ถูกเลือกมาทา Rollback จะถูกเรี ยกว่า
“victim” และถูกประมวลผลใหม่อีกครั้ง
© Pearson Education Limited 1995, 2005
53
การหลีกเลีย่ ง – ลดปัญหาการเกิด Dead Lock
54
การหลีกเลีย่ ง – ลดปัญหาการเกิด Dead Lock
55
การหลีกเลีย่ ง – ลดปัญหาการเกิด Dead Lock
56
การหลีกเลีย่ ง – ลดปัญหาการเกิด Dead Lock
57
LOGO
Database Recovery & Backup
58
Database Recovery : การกู้คนื ฐานข้ อมูล
59
Types of Failures
ระบบล่ม
ความขัดข้องจากสื่ อบันทึกข้อมูล
ความผิดพลาดจากโปรแกรมแอปพลิเคชัน
ความขัดข้องจากภัยธรรมชาติ
การไม่ดูแลเอาใจใส่
การก่อวินาศกรรม
© Pearson Education Limited 1995, 2005
60
ความจาเป็ นในการกู้ข้อมูล
การจัดเก็บข้อมูลในคอมพิวเตอร์จะต้องใช้กบั อุปกรณ์ต่าง
หลายประเภท เช่น หน่วยความจา ดิสก์ เทปแม่เหล็ก
ในขณะที่ขอ้ มูลผ่านอุปกรณ์เหล่านี้อาจมีขอ้ ผิดพลาดเกิดขึ้นได้
จึงต้องคานึงถึงประเภทของอุปกรณ์ที่ใช้จดั เก็บข้อมูลขณะที่เกิด
ข้อผิดพลาดขึ้นด้วย
ๆ
© Pearson Education Limited 1995, 2005
61
ประเภทของหน่ วยความจาสารอง
Volatile Storage
Nonvolatile Storage
Stable Storage
© Pearson Education Limited 1995, 2005
62
ประเภทของหน่ วยความจาสารอง
Volatile Storage
เป็ นอุปกรณ์ที่จะจัดเก็บข้อมูลได้กต็ ่อเมื่อมีกระแสไฟฟ้ า
ในกรณี ที่ไม่มีกระแสไฟฟ้ าข้อมูลที่จดั เก็บอยูใ่ นอุปกรณ์จะหายไป
อุปกรณ์ประเภทนี้จะใช้ในการจัดเก็บข้อมูลชัว่ คราว
เช่น RAM, Cache Memory
© Pearson Education Limited 1995, 2005
63
ประเภทของหน่ วยความจาสารอง
Nonvolatile Storage
เป็ นอุปกรณ์ที่สามารถจัดเก็บข้อมูลได้โดยไม่ตอ้ งใช้กระแสไฟฟ้ า
เช่น Disk
ปั ญหาที่มกั เกิดกับอุปกรณ์น้ ี คือ Disk Crash
© Pearson Education Limited 1995, 2005
64
ประเภทของหน่ วยความจาสารอง
Stable Storage
เป็ นอุปกรณ์ที่ไม่ตอ้ งอาศัยกระแสไฟฟ้ าในการจัดเก็บข้อมูล
มักจะนามาใช้ในการสารองข้อมูลมากกว่าในการประมวลผล
เช่น เทปแม่เหล็ก
© Pearson Education Limited 1995, 2005
65
ประเภทของความผิดพลาด
Logical Error
System Error
System Crash
Disk Failure
66
ประเภทของความผิดพลาด
Logical Error
เป็ นความผิดพลาดที่เกิดจากมีข้ นั ตอนการทางานที่ไม่ถกู ต้อง หรื อจากตัวข้อมูล
ที่ไม่สามารถรองรับการประมวลผลที่เกิดขึ้นได้
เช่น การกาหนดขนาดของฟิ ลด์ไม่เพียงพอต่อการจัดเก็บข้อมูล
67
ประเภทของความผิดพลาด
System Error
เป็ นความผิดพลาดที่เกิดจากการทางานตัวระบบที่ไม่ถูกต้อง หรื อไม่ครบถ้วน
พอ
เช่น ปั ญหาที่เกิดจากการจัดลาดับการทางานของโปรแกรมต่าง ๆ ไม่ดีพอ และ
ส่ งผลให้เกิดปั ญหาด้าน Deadlock ของข้อมูลขึ้น
68
ประเภทของความผิดพลาด
System Crash
เป็ นความผิดพลาดต่าง ๆ ที่เกิดขึ้นอุปกรณ์ที่ใช้จดั เก็บข้อมูลประเภท
Volatile Storage
เช่น ปั ญหาทางด้านกระแสไฟฟ้ าที่ไม่สม่าเสมอ ซึ่ งส่ งผลให้ขอ้ มูลที่จดั เก็บอยู่
ในหน่วยความจาสู ญหายไป
69
ประเภทของความผิดพลาด
Disk Failure
เป็ นความผิดพลาดต่าง ๆ ที่เกิดขึ้นอุปกรณ์ที่ใช้จดั เก็บข้อมูลประเภท
Nonvolatile Storage
เช่น ปั ญหาทางด้าน Disk Crash ซึ่ งส่ งผลให้ขอ้ มูลที่จดั เก็บอยูใ่ น
Disk บางส่ วนสู ญหายไป
70
การกู้ข้อมูลจาก Volatile Storage
มี 3 แบบคือ
การกูข้ อ้ มูลแบบ Log-Based
การกูข้ อ้ มูลแบบ Shadow Paging
การกูข้ อ้ มูลแบบ Checkpoints
71
การกู้ข้อมูลแบบ Log-Based
เป็ นการกูข้ อ้ มูลที่อาศัยข้อมูลจาก Log File ซึ่งเป็ นแฟ้ มข้อมูลที่ใช้
บันทึกการกระทาต่าง ๆ ใน Transaction ที่ก่อให้เกิดการ
เปลี่ยนแปลงค่าของข้อมูล
72
Transaction Log
73
Sample Log File
© Pearson Education Limited 1995, 2005
74
รู ปแบบรายการทีบ่ ันทึกใน Log File
แบ่งได้เป็ น 3 ประเภทคือ
Transaction Start
เป็ นรายการที่จะถูกบันทึกลงใน Log File เมื่อ Transaction เริ่ มต้น
ทางาน
Transaction Commit
เป็ นรายการที่จะถูกบันทึกลงใน Log File เมื่อ Transaction ทางาน
เสร็ จ
Update Activity
เป็ นรายการที่จะถูกบันทึกลงใน Log File ทุกครั้ง เมื่อการกระทานั้น
ก่อให้เกิดการเปลี่ยนแปลงค่าของข้อมูล
75
รู ปแบบการบันทึกข้ อมูลใน Log File
มี 2 รู ปแบบคือ
Deferred Database Modification
ข้อมูลที่ได้จากการประมวลผลจะถูกบันทึกลงในฐานข้อมูลได้กต็ ่อเมื่อ
Transaction นั้นทางานเสร็ จเรี ยบร้อยแล้ว
Immediate Database Modification
ข้อมูลที่ได้จากการประมวลผลจะถูกบันทึกลงในฐานข้อมูลได้ทนั ที โดยไม่ตอ้ ง
รอให้ Transaction นั้นทางานเสร็ จเรี ยบร้อย
76
การกู้ข้อมูลจาก Log File
Deferred Database Modification
จะนาเอาข้อมูลที่บนั ทึกอยูใ่ น Log File ทั้งหมดมาเลือกเฉพาะ
Transaction ที่มีการทางานที่เสร็ จสมบูรณ์
ได้แก่ Transaction ที่มีรายการครบทั้ง Start และ Commit
เพื่อนารายการประเภท Update ไปเก็บลงในฐานข้อมูล
77
การกู้ข้อมูลจาก Log File
Immediate Database Modification
จะนาเอารายการประเภท Activity ของทุก Transaction ที่บนั ทึก
ไว้ใน Log File มาบันทึกลงในฐานข้อมูลใหม่
ถ้า Transaction มีการทางานที่เสร็ จสมบูรณ์ ค่าใหม่ของรายการ
Update จะถูกบันทึกลงฐานข้อมูล
ถ้า Transaction มีการทางานที่ไม่สมบูรณ์ ค่าเดิมของขข้อมูลก่อน
การประมวลผลในรายการ Update จะถูกบันทึกลงฐานข้อมูลแทน
78
วิธีการฟื้ นสภาพ เนื่องจากการฟื้ นสภาพแบบล็อกเบส
การฟื้ นสภาพแบบล็อกเบส จะต้องปฏิบตั ิตามกฎเกณฑ์การบันทึก
(write-ahead protocal) โดยเรคอร์ดประวัติจะต้องบันทึก
(write) ลงไฟล์ประวัติก่อนเสมอ จึงจะยอมให้มีการบันทึกข้อมูลจากที่
พักข้อมูลชัว่ คราว (buffer) ลงฐานข้อมูลได้ ด้วยกฎเกณฑ์น้ ีทาให้เรา
สามารถที่จะยกเลิกหรื อทาซ้ าการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นกับฐานข้อมูล
ได้โดยใช้ค่าเก่าหรื อค่าใหม่ที่เก็บไว้ไฟล์ประวัติ (log file) การฟื้ น
สภาพมี 3 วิธี ดังนี้ คือ การยกเลิก การทาซ้ า และจุดตรวจสอบ ซึ่งความ
ขัดข้องบางกรณี อาจใช้เพียงวิธีใดวิธีหนึ่ง หรื ออาจจะใช้ท้ งั 2 วิธี หรื อ
ใช้ท้ งั 3 วิธีร่วมกันได้
79
วิธีการฟื้ นสภาพ เนื่องจากการฟื้ นสภาพแบบล็อกเบส
1) การยกเลิก (UNDO) คือ การยกเลิกสิ่ งที่ทามาแล้วสาหรับท
รานแซกชันที่กาลังทางานอยูแ่ ล้วเกิดความขัดข้องขึ้นระหว่างการ
ดาเนินงานก่อนที่จะคอมมิต (COMMIT) ลักษณะนี้จะยกเลิกการ
กระทาที่ได้ทามาแล้วทั้งหมด
2) การทาซ้า (REDO) คือ การทาซ้ าสาหรับ ทรานแซกชันที่
ทางานเสร็ จสมบูรณ์แล้ว (COMMIT) แล้ว แต่ยงั ไม่มีการ
เคลื่อนย้ายข้อมูลจากที่พกั ข้อมูลชัว่ คราว (buffer) ในหน่วยความจา
หลักลงสู่ฐานข้อมูลจริ งก็เกิดปัญหาขัดข้องเสี ยก่อน ซึ่งเสมือนว่าทราน
แซกชันยังไม่ทางาน ดังนั้นจึงต้องกระทาซ้ าทรานแซกชันนั้น
80
วิธีการฟื้ นสภาพ เนื่องจากการฟื้ นสภาพแบบล็อกเบส
3) จุดตรวจสอบ (CHECKPOINT) คือ เวลา ณ ขณะใด
ขณะหนึ่งที่ระบบปฏิบตั ิการ (OS) และระบบจัดการฐานข้อมูล
(DBMS) ใช้ทาการเคลื่อนย้ายข้อมูลจากที่พกั ข้อมูลชัว่ คราว
(buffer) ในหน่วยความจาหลักลงฐานข้อมูลในดิสก์ โดยจุด
ตรวจสอบจะถูกบันทึกในไฟล์ประวัติ (log file) เป็ นระยะๆ เพื่อ
ประโยชน์ในการฟื้ นสภาพ
81
วิธีการฟื้ นสภาพ เนื่องจากการฟื้ นสภาพแบบล็อกเบส
การทาจุดตรวจสอบบ่อยหรื อถี่ ๆ ย่อมทาให้การฟื้ นสภาพเร็วขึ้นแต่
อาจจะลดประสิ ทธิภาพการทางานของระบบเพราะต้องติดต่อกับส่ วน
รับเข้า/ส่ งออก (I/O) บ่อย ๆ
ดังนั้นช่วงเวลาของการทาจุดตรวจสอบว่าจะเลือกให้ถี่แค่ไหนขึ้นกับ
ลักษณะและปริ มาณของทรานแซกชัน เช่น ถ้าเป็ นทรานแซกชันขนาด
ใหญ่ ๆ ก็ไม่ควรให้ถี่นกั เพราะต้องเสี ยเวลาเคลื่อนย้ายข้อมูล
82
วิธีการฟื้ นสภาพ เนื่องจากการฟื้ นสภาพแบบล็อกเบส
การกาหนดจุดตรวจสอบว่าควรจะบ่อยครั้งนั้นอาจมีผลเสี ยคือถ้าจุด
ตรวจสอบถี่ (checkpoint time หรื อ Tc) จะทาให้การฟื้ น
สภาพเร็ วขึ้น เพราะสามารถยกเลิก (UNDO) ทาซ้ า (REDO)
ทรานแซกชันที่เกิดข้อขัดข้องได้ในช่วงเวลาของจุดตรวจสอบนั้น โดยไม่
ต้องฟื้ นสภาพ ณ จุดเริ่ มต้นของทรานแซกชัน แต่อาจทาให้เกิดปัญหาคอ
ขวดขึ้น (bottle neck) ขึ้นได้ คือ อาจใช้เวลาในการเคลื่อนย้าย
ข้อมูลจากหน่วยความจาหลักลงฐานข้อมูลในดิสก์มากกว่าปกติ แต่ถา้ จุด
ตรวจสอบห่าง (checkpoint time หรื อ Tc) อาจทาให้เปลือง
เนื้อที่ในหน่วยความจาหลักเพราะต้องใช้ที่พกั ข้อมูลชัว่ คราว (buffer)
ขนาดใหญ่ในการเก็บข้อมูลจานวนมากที่ยงั ไม่ได้เคลื่อนย้ายลง
ฐานข้อมูลในดิสก์
83
วิธีการฟื้ นสภาพ เนื่องจากการฟื้ นสภาพแบบล็อกเบส
การฟื้ นสภาพไม่วา่ จะเกิดจากความขัดข้องประการใดๆ จะใช้ไฟล์ประวัติ
(log file) เข้ามาช่วยในการนาข้อมูลกลับคืนมาให้อยูใ่ นสภาวะที่
ถูกต้อง
84
การกู้ข้อมูลแบบ Checkpoints
การกูค้ ืนข้อมูลที่เกิดจากเหตุขดั ข้องแบบ System Failure หรื อ
Soft Cash จะกาหนดให้มีจุดตรวจสอบ เพื่อใช้ตรวจสอบการ
ทางานของรายการที่เปลี่ยนแปลง
เป็ นการกูข้ อ้ มูลโดยการใช้ Log File
แต่ในการบันทึกข้อมูลของ Log File จะกระทาเป็ นช่วงแทน
โดยมีการกาหนดจุดเริ่ มต้นของ Transaction ที่เริ่ มบันทึกรายการ
ลงใน Log File ที่เรี ยกว่า จุด Checkpoint ไว้
เมื่อเกิดมี Transaction ที่ทางานไม่สมบูรณ์ ก็จะนาข้อมูลใน
Log File ตั้งแต่จุด checkpoint มาประมวลผลใหม่
85
ตัวอย่างความขัดข้องของระบบ
พิจารณาตัวอย่าง การโอนเงินจากบัญชี ก. ไปบัญชี ข. สมมติ บัญชี ก. มียอดเงิน 1,000
บาท บัญชี ข. มียอดเงิน 800 บาท และต้องการโอนเงิน 300 บาท จากบัญชี ก. ไปยังบัญชี
ข.
ขั้นตอนการทางานเป็ นดังนี้
1. อ่านยอดเงินบัญชี ก. จากฐานข้อมูลในดิสก์ไปเก็บไว้ในที่พกั ข้อมูลชัว่ คราว (buffer) ใน
หน่วยความจาหลัก
2. คานวณยอดเงินบัญชี ก. โดยหักเงินโอน 300 บาท ดังนั้นยอดเงินในบัญชี ก. ใหม่ คือ
700 บาท ซึ่ งทาให้ค่าของข้อมูลในที่พกั ข้อมูลชัว่ คราว (buffer) ในหน่วยความจาหลัก
เปลี่ยนแปลงไป
3. อ่านยอดเงินจากบัญชี ข. จากฐานข้อมูลในดิสก์ มาเก็บไว้ในที่พกั ข้อมูลชัว่ คราวใน
หน่วยความจาหลัก
4. คานวณยอดเงินบัญชี ข. ได้ยอดเงินใหม่ คือ 1100 บาท ซึ่งจะเก็บไว้ในที่พกั ข้อมูล
ชัว่ คราวในหน่วยความจาหลัก
5. เมื่อที่พกั ข้อมูลชัว่ คราวเต็ม จะมีการเคลื่อนย้ายข้อมูลจากที่พกั ข้อมูลชัว่ คราวไปเก็บใน
ฐานข้อมูลในดิสก์ ถ้ายอดเงินบัญชี ก. ถูกบันทึกลงฐานข้อมูลในดิสก์ก่อน แต่ยอดเงินบัญชี ข. ยัง
ไม่ถูกบันทึกลงฐานข้อมูลในดิสก์และเกิดปั ญหาขัดข้องระหว่างนี้กจ็ ะทาให้ขอ้ มูลในที่พกั ข้อมูล
ชัว่ คราวสูญหายไป และทาให้ยอดเงินบัญชี ข. ในฐานข้อมูลในดิสก์ไม่ถูกต้อง
86
ขั้นตอนการฟื้ นสภาพ
จากตัวอย่างข้างต้นจะเห็นว่า แม้วา่ ทรานแซกชันจะทางานจนเสร็ จสิ้ นถึงคอมมิต
(COMMIT) ก่อนเกิดปั ญหาขัดข้องแล้วก็ตาม แต่ค่ายอดเงินของบัญชี ข. ยัง
อยูใ่ นที่พกั ข้อมูลชัว่ คราวเป็ น 1100 บาท ยังมิทนั ได้เก็บบันทึกลงฐานข้อมูลจริ ง
เลย คือค่าในฐานข้อมูลยังเป็ น 800 บาท ซึ่ งไม่ถกู ต้องเพราะค่ายอดเงินในบัญชี
ก. ของฐานข้อมูลเปลี่ยนแปลงเป็ นค่าใหม่แล้ว แต่ค่ายอดเงินในบัญชี ข. ยังคงเป็ น
ค่าเดิม ทาให้เราต้องทาการฟื้ นสภาพ แต่มีคาถามที่เกิดขึ้นคือเราต้องทาการฟื้ น
สภาพย้อนหลังถึงเมื่อไร ซึ่ งโดยทัว่ ไปแล้วเราไม่มีโอกาสทราบได้เลยว่าเมื่อระบบ
เกิดข้อขัดข้องขึ้น แล้วข้อมูลส่ วนไหนที่เขียนลงฐานข้อมูลไปบ้าง
87
ขั้นตอนการฟื้ นสภาพ
ดังนั้นโดยหลักการแล้วเพื่อความมัน่ ใจว่าข้อมูลในฐานข้อมูลถูกต้อง
ทั้งหมด จึงต้องทาซ้ า (REDO) ข้อมูลตั้งแต่ตน้ ของไฟล์ประวัติ
(log file) ซึ่งกรณี น้ ีเป็ นวิธีที่ไม่มีประสิ ทธิภาพ เพราะจะต้องทาซ้ า
ใหม่ต้ งั แต่ตน้ ดังนั้นจึงมีจดุ ตรวจสอบ (CHECK POINT)
ขึ้นเพื่อให้ทราบว่าจะทาการฟื้ นสภาพ (recover) ย้อนหลังถึงจุด
ไหนนัน่ เอง ซึ่งประโยชน์ของจุดตรวจสอบ คือทาให้การฟื้ นสภาพทาได้
เร็ วขึ้น
88
การกู้ข้อมูลโดยใช้ จุดตรวจสอบ
89
90
ขั้นตอนการฟื้ นสภาพ
จะเห็นได้วา่ เมื่อเกิดความขัดข้องขึ้น ณ เวลา Tf ใดๆ นั้น
ทรานแซกชัน T1 เท่านั้น ซึ่งเสร็จสิ้นสมบูรณ์และปลอดภัย เพราะคอม
มิต (COMMIT) แล้วก่อนจุดตรวจสอบครั้งสุ ดท้าย ณ เวลา Tc
และข้อมูลได้ถูกเก็บไว้ในฐานข้อมูลจริ งแล้ว
ทรานแซกชัน T3,T5 ยังไม่ได้คอมมิตจึงต้องยกเลิก (UNDO)
การทางานทั้งหมด
ทรานแซกชัน T2,T4 คอมมิตแล้ว ถึงแม้วา่ ทรานแซกชัน T2 และ
T4 จะเสร็ จสิ้ นสมบูรณ์แล้ว แต่ยงั ไม่ทนั ที่ ทรานแซกชันทางานเสร็ จสิ้ น
ก่อนจุดตรวจสอบเพื่อเคลื่อนย้ายข้อมูลไปสู่ฐานข้อมูลจริ ง ก็เกิดปัญหา
ขัดข้องเสี ยก่อน ดังนั้นจึงต้องทาซ้ า (REDO) ทรานแซกชันนั้นใหม่
อีกครั้ง
91
ขั้นตอนการฟื้ นสภาพ
มีขอ้ สังเกตคือทรานแซกชัน T2 จะทาซ้ า (REDO) เฉพาะการ
เปลี่ยนแปลงที่เกิดขึ้นหลังจุดตรวจสอบ ณ เวลา Tc เท่านั้น เนื่องจาก
การเปลี่ยนแปลงของทรานแซกชันก่อนจุดตรวจสอบ ณ เวลา Tc ได้ถกู
บันทึกในฐานข้อมูลจริ งแล้ว และในทานองเดียวกันทรานแซกชัน T3
ก็จะยกเลิก (UNDO) เฉพาะการเปลี่ยนแปลงที่เกิดขึ้นก่อนจุด
ตรวจสอบ ณ เวลา Tc เท่านั้น เนื่องจากการเปลี่ยนแปลงที่เกิดขึ้น
หลังจากจุดตรวจสอบ ณ เวลา Tc กระทาอยูใ่ นที่พกั ข้อมูลชัว่ คราว
(buffer) เท่านั้นยังไม่ได้บนั ทึกลงฐานข้อมูลจริ ง ส่ วนการ
เปลี่ยนแปลงที่เกิดก่อนจุดตรวจสอบ ณ เวลา Tc ได้ถูกเก็บไว้ใน
ฐานข้อมูลแล้ว ดังนั้นจึงจาเป็ นต้องยกเลิกการเปลี่ยนแปลงต่างๆ ที่
เกิดขึ้นก่อนจุดตรวจสอบ ณ เวลา Tc เพื่อให้ขอ้ มูลในฐานข้อมูลกลับสู่
สภาพเดิม
92
การกู้ข้อมูลแบบ Shadow Paging
เป็ นการจัดเก็บข้อมูลเพื่อนามาใช้ในการกูข้ อ้ มูล
โดยการกาหนดเนื้อที่ใน Disk ไว้สวนหนึ่ง เพื่อใช้ในการทาสาเนา
ข้อมูลที่จะถูกเรี ยกใช้ใน Transaction ไว้ก่อนที่
Transaction นั้นจะเริ่ มต้นทางาน
ซึ่งเนื้อที่ที่เตรี ยมไว้สาหรับสาเนาข้อมูลจะเรี ยกว่า Shadow
Page
93
การกู้ข้อมูลแบบ Shadow Paging
ข้อมูลที่อยูใ่ น Shadow Page จะไม่สามารถเปลี่ยนแปลงแก้ไข
ได้ และจะถูกนามาใช้เมื่อ Transaction ที่ทางานนั้นมีขอ้ ผิดพลาด
เกิดขึ้น
โดยการนาข้อมูลใน Shadow Page มาบันทึกทับลงใน
ฐานข้อมูลเดิม
ในกรณี ที่ Transaction ทางานสมบูรณ์ ข้อมูลใน Shadow
Page จะถูกยกเลิกไป
94
การกู้ข้อมูลจาก Nonvolatile Storage
เริ่ มจากการจัดเก็บข้อมูลทั้งหมดเพื่อไว้ใช้ในการกูข้ อ้ มูล
โดยใช้วิธีการสารองข้อมูล (Backup) ไว้ในอุปกรณ์ประเภท
Stable Storage แทน เช่น การสารองข้อมูลไว้ในเทปแม่เหล็ก
ช่วงเวลาในการทาการสารองข้อมูล ให้พิจารณาจากความสาคัญและ
ปริ มาณของข้อมูลที่เกิดขึ้น
95
การกู้ข้อมูลจาก Nonvolatile Storage
การกูข้ อ้ มูลจะใช้การถ่ายโอนข้อมูลจาก Stable Storage
กลับมายัง Nonvolatile Storage ทั้งหมด
แล้วจึงนาเฉพาะ Transaction ที่จดั เก็บไว้ใน Log File และมี
การทางานที่เสร็ จสมบูรณ์ มาบันทึกค่าของข้อมูลตามค่าที่เก็บไว้ใน
รายการประเภท Update Activity ลงในฐานข้อมูลใหม่
96
LOGO
FAQ
97