Validation (optimistic) Concurrency control Techniques
ขณะที่เทคนิคต่างๆที่ได้กล่าวมาขั้นต้นเป็นการตรวจสอบก่อนที่จะกระทำการใดๆกับข้อมูลใน database เพื่อให้แน่ใจว่าจะได้ผลลัพธ์ที่ถูกต้อง ซึ่งการตรวจสอบนี้มีผลทำให้ผู้ใช้เสียเวลามากขึ้นในการทำ transaction ที่ต้องการ แต่แนวคิดของ optimistic concurrency control จะไม่มีการตรวจสอบก่อนการทำงานของ transaction ทุกๆอัน โดยจะอนุญาตให้ทำการเปลี่ยนแปลงแก้ไขข้อมูลได้ทันทีแต่จะเป็นการแก้ไขลงในส่วนที่เรียกว่า "local copies" แล้วจึงค่อยนำ local copies ทั้งหมดมาตรวจสอบในคราวเดียวเพื่อจะนำไปแก้ไขข้อมูลลงในฐานข้อมูลจริงๆ ดังนั้นการทำงานของ transaction จะแบ่งออกเป็น 3 ช่วงดังนี้
1. The read phase transaction จะสามารถอ่านข้อมูลต่างๆได้ ส่วนการแก้ไขข้อมูลจะถูกบันทึกลง local copies ของข้อมูลนั้น
2.The validation phase จะเป็นช่วงที่จะตรวจสอบ serializability ของ transaction ว่าจะเกิดการผิดพลาดของข้อมูลหรือไม่ถ้าบันทึกการเปลี่ยนแปลงใน local copies ลงฐานข้อมูลจริงๆ
3.The write phase ถ้าตรวจสอบแล้วว่าการแก้ไขข้อมูลนั้นๆไม่ก่อให้เกิดการผิดพลาดของข้อมูล ก็จะทำการแก้ไขลงในฐานข้อมูล แต่ถ้าพบความผิดพลาดก็จะไม่ทำ และ transaction นั้นๆจะ rollback และ redo อีกครั้งในเวลาต่อมา
การตรวจสอบความถูกต้องในช่วงของ validation phase จะมีอยู่หลายวิธี ในที่นี้จะกล่าวถึงวิธีที่อาศัย transaction timestamp ในการตรวจสอบซึ่งจะมีค่าที่เกี่ยวข้องดังนี้
- เวลาเริ่มต้นและสิ้นสุดในช่วง read phase และ write phase ของ transaction
- write_set คือกลุ่มของข้อมูลทุกตัวที่ถูกแก้ไขโดย transaction
- read_set คือกลุ่มของข้อมูลทุกตัวที่ถูก read โดย transaction
โดยจะตรวจสอบดูว่า transaction X ใดๆมีการ "แทรกแซง(interference)" transaction Y ที่เป็น transaction ที่ได้รับการ commit ไปแล้วหรือไม่ก็เป็น transaction ที่ผ่านการตรวจสอบในช่วง validation มาแล้ว โดย transaction X จะไม่มี interference หากเป็นไปตามเงื่อนไขข้อใดข้อหนึ่งคือ
- transaction Y จบช่วง write phase ก่อน transaction X จะเริ่มช่วง read phase
- transaction Y จบช่วง write phase ก่อน transaction X จะเริ่มช่วง write phase และ read_set ของ transaction X ไม่มีข้อมูลใดซ้ำกับ write_set ของ transaction Y
- transaction Y จบช่วง read phase ก่อนที่ transaction X จะจบช่วง read phase และทั้ง read_set และ write_set ของ transaction X ไม่มีข้อมูลใดซ้ำกับ write_set ของ transaction Y
ตามแนวคิดในเทคนิคนี้ ผู้ใช้จะไม่เสียเวลาในการทำ transaction ของตน แต่หากในช่วง validation phase เกิดมี interferance มากๆ ซึ่งส่งผลให้ transaction ส่วนใหญ่ต้องถูก rollback จะทำให้เทคนิคนี้ไม่มีประสิทธิภาพในการทำงาน อย่างไรก็ตาม เทคนิคนี้ถูกเรียกว่า "optimistic" เพราะว่ามีสมมติฐานที่ว่า transaction ส่วนใหญ่แล้วจะไม่ก่อให้เกิดปัญหาไม่จำเป็นต้องตรวจสอบในขณะที่ transaction ต่างๆกำลังทำงานอยู่