วันเสาร์, พฤษภาคม 22, 2553

ค่าที่กำหนดให้ Isolation Level มีดังนี้

Chaos การแก้ไขที่คงสถานะ “รอ” Pending โดยกำหนดค่าระดับที่ ไม่อนุญาตให้เขียนทับ
ค่าได้ จนกว่า การทำงานของ Transaction จะสิ้นสุด (SQL Server ไม่รองรับข้อ
กำหนดนี้ )

ReadUnCommitted เหมือนข้อกำหนด Dirty Read : ไม่มีการทำ Shared Lock และการกำหนด
Exclusive Lock Isolation ชนิดนี้ เหมาะสำหรับ การทำงาน กับทุกข้อมูลที่ตรง
กับ เงื่อนไข โดยไม่สนใจว่า Transaction จะ Commit หรือไม่

ReadCommitted ขณะที่อ่านข้อมูล จะกำหนด Share Lock ไปยังชุดข้อมูล ที่ Transaction ทำ
งานอยู่ เพื่อหลีกเลี่ยงการอ่านข้อมูล แบบ Dirty Read ผลลัพท์จะเหมือนกับ
Non-Repeatable Read หรือ Phantom Rows Isolation ชนิดนี้ เหมาะสำหรับ
การทำงาน กับทุกข้อมูลที่ตรงกับ เงื่อนไข และ Commit แล้วเท่านั้น และค่านี้ยัง
เป็น ค่าดีฟอลท์ สำหรับ Isolation Level หากไม่ระบุใน Transaction

RepeatableRead กำหนด Share Lock กับข้อมูลทั้งหมดที่ใช้ในคิวรี เพื่อป้องกันการแก้ไขข้อมูลจาก
ผู้ใช้คนอื่นๆ และ ป้องกันการอ่านแบบ Non-Repeatable Isolation ชนิดนี้ เหมาะ
สำหรับ กรณีที่เราต้องการ รายการข้อมูล (Record) ที่อ่านเข้ามา ยังคงเป็นค่า
เดิมในการอ่านข้อมูลครั้งต่อไป

ResizeableRead กรณีนี้ จะล็อก ชุดข้อมูล เพื่อป้องกันการแก้ไขและเพิ่มข้อมูลจากผู้ใช้คนอื่นๆ จน
กว่า Transaction จะทำงานเสร็จ Isolation ชนิดนี้ เหมาะสำหรับ กรณีที่เราต้อง
การ ชุดข้อมูลที่เราทำงานอยู่ เป็นชุดข้อมูลเดียวกัน จนกระทั่งเราประมวลผล
รายการจนแล้วเสร็จ

UnSpecified กรณีนี้ คือการนำ Isolation Level ที่ต่างจากข้อกำหนดมาใช้ ซึ่งไม่สามารถระบุ
Isolation Level ได้

1 ความคิดเห็น: