ZengCode.Com (The Thai Php Framework)  


Home   Download   Manual   About us    

Facebook   


MAIN MENU
เขียนโปรแกรมบน iPhone ด้วย MonoTouch
News
Php Tips
Ubuntu
Spring+Strut+Hibernate
Android Programming
Design Pattern By PHP
C# Design Pattern
Linux Quick Tips
C# Tips & Technique
C# using Linq น่าใช้จริงๆ
Java & JavaScript Tips
MAVEN
Database & SQL
ZengCode Framework Guide
Mac OSx
Zeng Code Code
Programming
IPhone (Tips and Trick)

Download เอกสารที่น่าสนใจ

     เลือกใช้ Isolation Level ที่เหมาะสมกับงาน  (2009-11-04)

คัดลอกมาจาก หนังสือ 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
--------------------------------------------------------------------
  1. Read Uncommitted
    เป็น Isolation Level ระดับต่ำที่สุด ซึ่งมีการทำงานใช้ข้อมูลร่วมกัน โดยไม่มีการ Lock ข้อมูลเลย อีกทั้งยังสามารถนำข้อมูลผลลัพธ์ของ Transaction ที่ยังไม่ Commit ไปใช้งานได้อีกด้วย จึงทำให้อัตราความผิดพลาดของข้อมูลในฐานข้อมูลมีโอกาสเกิดได้สูง กล่าวได้ว่า Isolation Level ระดับนี้ ไม่ได้แก้ปัญหา Concurrency Control Problem ข้อใด ๆ ได้เลย ซึ่งมักจะกำหนด Isolation Level นี้กับงานที่ให้บริการอ่านข้อมูลได้อย่างเดียว ไม่สามารถเพิ่ม ลบ และแก้ไขข้อมูลได้ หรือไม่มีการแก้ไขข้อมูลบ่อยนัก ซึ่งจะสามารถรองรับผู้ใช้งานพร้อมกันในเวลาเดียวกันได้เป็นจำนวนมาก
  2. 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 แล้ว) และรองรับผู้ใช้งานจำนวนมากเท่านั้น
  3. Repeatable Read
    มีลักษณะการทำงานอยู่ในรูปแบบ HOLD LOCK ระหว่างที่กำลังทำงานกับข้อมูล จะไม่ปลด Lock จนกว่า Transaction จะ Commit ซึ่งจะแก้ปัญหา Lost Update, Uncommitted Dependency (Dirty Read) และ Inconsistent Analysis (Non Repeatable Read) ได้ แต่ว่า Isolation Level นี้ยังไม่สามารถแก้ปัญหา Phantom Phenomenon ได้
  4. Serializable
    เป็น Isolation Level ระดับสูงสุดที่สามารถแก้ปัญหา Concurrency Control Problem ทั้ง 4 ข้อได้ ซึ่งรับประกันถึงความถูกต้องของข้อมูลสูงสุดด้วย แต่ว่า Isolation Level นี้มีอัตราการ Lock ข้อมูลสูงและมีโอกาสของการเกิด Deadlock สูงด้วย

...


Comment
Name
Comment
Security CodeCAPTCHA Image

web hit counter

This page took 0.053815 seconds to load.