The incorrect summary problem

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

สมมติค่าเริ่มต้น a = 10 , b = 20 , c = 30

transaction " x "

time

transaction " y "

sum = 0;

read ค่า a;

sum: = sum + a;

t1

 
 

t2

read ค่า b;

b:= b + 2;

read ค่า b;

sum: = sum + b;

read ค่า c;

sum: = sum + c;

t3

 
 

t4

read ค่า c;

c:= c - 2;

สมมติให้ transaction x เป็นการหาผลรวมของจำนวนที่นั่งที่ถูกจองทั้งหมดจากเที่ยวบิน 2 เที่ยวบิน (a,b,c) และ transaction y เป็นการเปลี่ยนเที่ยวบินของลูกค้า 2 ที่นั่งจากเที่ยวบิน c ไปเป็นเที่ยวบิน b ซึ่งการเปลี่ยนเที่ยวบินนี้จำนวนที่นั่งที่ถูกจองทั้งหมด 3 เที่ยวบินก็ควรจะเท่าเดิมคือ 60 ที่นั่ง แต่จากลำดับของการประมวลผลข้างต้น ผลลัพธ์จาก transaction x จะได้เป็น 62 ที่นั่งซึ่งเป็นค่าที่ไม่ถูกต้อง และนี่ก็คือปัญหา incorrect summary นั่นเอง

 

1