คัดลอกมาจาก หนังสือ SQL Server 2005 ฉบับสมบูรณ์
แต่งโดย พงษ์พันธ์ ศิวิลัย
สำนักพิมพ์ ซีเอ็ด
หน้า 207
--------------------------------------------------------------------
เลือกใช้ Isolation Level ที่เหมาะสมกับงาน
Isolation Level แต่ละระดับนั้นมีการ Lock ข้อมูลที่แตกต่างกัน ยิ่งเป็น Serializable, Repeatable Read ด้วยแล้ว อัตราการ Lock ข้อมูลจะสูง ดังนั้นจึงควรกำหนด Isolation Level ที่เหมาะสมกับการใช้งาน เช่นระบบงานที่เป็น Web Application ใช้ SQL Server 2005 เก็บข้อมูลที่แสดงบน Web ควรใช้ Isolation Level เป็น Read Committed แต่ถ้าหากเป็นระบบที่มีเรื่องเงินเข้ามาเกี่ยวข้องอาจจะเปลี่ยนเป็น Repeatable Read หรือ Serializable ก็ได้ตามความเหมาะสม เป็นต้น ทั้งนี้ Isolation Level ที่เหมาะสมนั้นขึ้นอยู่กับลักษณะงานของระบบงานนั้น ๆ เป็นสำคัญ ไม่มีทฤษฎีตายตัว
...
หน้า 212
--------------------------------------------------------------------
- Read Uncommitted
เป็น Isolation Level ระดับต่ำที่สุด ซึ่งมีการทำงานใช้ข้อมูลร่วมกัน โดยไม่มีการ Lock ข้อมูลเลย อีกทั้งยังสามารถนำข้อมูลผลลัพธ์ของ Transaction ที่ยังไม่ Commit ไปใช้งานได้อีกด้วย จึงทำให้อัตราความผิดพลาดของข้อมูลในฐานข้อมูลมีโอกาสเกิดได้สูง กล่าวได้ว่า Isolation Level ระดับนี้ ไม่ได้แก้ปัญหา Concurrency Control Problem ข้อใด ๆ ได้เลย ซึ่งมักจะกำหนด Isolation Level นี้กับงานที่ให้บริการอ่านข้อมูลได้อย่างเดียว ไม่สามารถเพิ่ม ลบ และแก้ไขข้อมูลได้ หรือไม่มีการแก้ไขข้อมูลบ่อยนัก ซึ่งจะสามารถรองรับผู้ใช้งานพร้อมกันในเวลาเดียวกันได้เป็นจำนวนมาก
- Read Committed หรือ Cursor Stability
เป็น Isolation Level ที่เป็น Default ของ SQL Server 2005 ซึ่งมีการทำงานที่การใช้งานข้อมูลนั้นจะต้องเป็นข้อมูลผลลัพธ์ของ Transaction ที่ Commit แล้วเท่านั้น กล่าวคือ หากอยู่ในระหว่างการทำงานของ Transaction ข้อมูลนั้นจะยังไม่สามารถใช้งานได้กว่า Transaction นั้นจะ Commit เสียก่อน เป็นการแก้ปัญหา Uncommitted Dependency (Dirty Read) กล่าวได้ว่า Isolation Level นี้สามารถแก้ปัญหา Uncommitted Dependency(Dirty Read) ได้เท่านั้น ส่วนปัญหาข้ออื่นไม่สามารถแก้ปัญหาได้ Isolation Level นี้มักจะใช้ในงานที่ให้บริการข้อมูลผ่าน Web Application ที่มีการแก้ไข-เพิ่มข้อมูลได้ ซึ่งต้องการเพียงแสดงข้อมูลที่ถูกต้อง (Commit แล้ว) และรองรับผู้ใช้งานจำนวนมากเท่านั้น
- Repeatable Read
มีลักษณะการทำงานอยู่ในรูปแบบ HOLD LOCK ระหว่างที่กำลังทำงานกับข้อมูล จะไม่ปลด Lock จนกว่า Transaction จะ Commit ซึ่งจะแก้ปัญหา Lost Update, Uncommitted Dependency (Dirty Read) และ Inconsistent Analysis (Non Repeatable Read) ได้ แต่ว่า Isolation Level นี้ยังไม่สามารถแก้ปัญหา Phantom Phenomenon ได้
- Serializable
เป็น Isolation Level ระดับสูงสุดที่สามารถแก้ปัญหา Concurrency Control Problem ทั้ง 4 ข้อได้ ซึ่งรับประกันถึงความถูกต้องของข้อมูลสูงสุดด้วย แต่ว่า Isolation Level นี้มีอัตราการ Lock ข้อมูลสูงและมีโอกาสของการเกิด Deadlock สูงด้วย
...