อันนี้เป็น 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.