แนวข้อสอบเกี่ยวกับ Isolation level

อันนี้เป็น Blog ที่เขียนไว้นานมากแล้วที่ blogspot โดยผมได้ย้ายมาลง WordPress ตอนช่วงปี 2013 นะครับ ^__^ ลองอ่านดูกันได้เลย โดยเป็นโจทย์ที่ช่วงให้เข้าใจเกี่ยวกับ Isolation level มากขึ้นครับ หาก DBA ตั้งค่า ISOLATION LEVEL ที่ตัวระบบจัดการฐานข้อมูล ในระดับต่างๆแล้ว ณ เวลาที่ k ผลรวมของทุก Account ของ Ti จะมีค่าที่ได้เท่าไหร่ โดยแต่ละ Account มีค่าต่างๆ ดังนี้

  • Account 1 มีค่า 10 บาท
  • Account 2 มีค่า 20 บาท
  • Account 3 มีค่า 30 บาท
  • Account 4 มีค่า 40 บาท
READ-UNCOMMITTED
  • หลักการ : อ่านได้ตลอด ไม่สนใจ commit
  • จะเกิดปัญหา Dirty Read/Lost Update
  • สาเหตุ : Ti ที่เราทำงานอยู่ ถูกรบกวนจาก Tj
  • ค่าที่ได้ 100
READ-COMMITED 
  • หลักการ : อ่านได้หลัง commit
  • จะเกิดปัญหา : Unrepeatable Read
  • สาเหตุ : Ti ที่เราทำงานอยู่ ถูกรบกวนจาก Tj ก่อนที่ Ti จะทำการ commit
  • ค่าที่ได้ : 100
REPETABLE-READ
  • หลักการ : lock Tx ที่ทำงานอยู่ไว้ไม่ให้มีการเขียน x-lock จนกว่าจะทำงานเสร็จ (ป้องกัน T อื่นๆมารวมกวนการทำงานของ Tx)
  • จะเกิดปัญหา : Phantom phenomenal(เกิดจากการ insert)
  • สาเหตุ : REPETABLE-READ จะป้องการการเขียน Tx ที่ทำงาน แต่ไม่ได้ป้องการการอ่านทำให้ T อื่นๆ เข้ามา insert เพิ่มได้
  • ค่าที่ได้ : 100
SERIALIZABLE 
  • หลักการ : lock Tx ที่ทำงานอยู่ไว้ไม่ให้มีการเขียน x-lock + การใช้ Multiple Granularity โดยการ lock table(ป้องกันการ insert)จนกว่าจะทำงานเสร็จ
  • จะเกิดปัญหา : -
  • สาเหตุ : -
  • ค่าที่ได้ : 60

Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.