The temporary update ( or dirty read ) problem

@ ปัญหานี้สาเหตุเกิดจากมี transaction เกิดปัญหาในระหว่างการทำงาน เป็นเหตุให้ต้องยกเลิกการเปลี่ยนแปลงทั้งหมดที่เกิดจากรายการนี้ และหากมี transaction อื่นได้อ่านค่าที่เกิดจากการเปลี่ยนแปลงนั้นไปใช้ transaction นั้นก็จะได้ค่าที่ไม่ถูกต้องไป ตัวอย่างเช่นลำดับการทำงานของ สอง transaction ต่อไปนี้

transaction "a"

time transaction "b"

read ค่า X;

X:= X + 3;

t1

 
 

t2

read ค่า X;

read ค่า y;

(transaction fail)

ทำให้เกิดการ rollback

t3

 

สมมติว่าค่า X เริ่มต้น = 4 จะเห็นว่าเมื่อ transaction a เกิดการ rollback ส่งผลให้ค่า X กลับเป็นค่าเดิม แต่ transaction b ได้ค่า X ที่เท่ากับ 7 ไป ( 4 + 3 ) ซึ่งเป็นค่าที่ผิด ( dirty data ) ซึ่งก็คือปัญหา temporary update หรือ dirty read นั่นเอง

1