Concurency Control: Basic Problem

ปัญหาของ concurrency control โดยทั่วไปมีดังนี้
  1. lost update
    T1T2
    read A= 30

    read A = 30
    A = A + 1

    A = A * 2
    ผลลัพธ์สุดท้าย คือ A = 60 เืสมือนว่า transaction t1 ไม่ได้เกิดขึ้นเลย
    ปัญหาข้อนี้ ถือว่า ไม่ conflict serializable
  2. uncommitted dependency
    ตัวอย่าง

    T1T2

    update(A)
    read(A)

    rollback

    จะเห็นว่า ค่าที่ T1 read ขึ้นไปเป็นค่าที่ผิดพลาดเพราะว่า T2 roll back

  3. inconsistent analysis
    ตัวอย่างเช่น T1 เป็นการ sum ค่าทั้งหมด
    T1T2
    read sum(30) = A(30)
    read sum(50) = sum + B(20)

    read A = 30

    A = A(30) - 10

    C = C(50) + 10
    read sum(110) = sum + c(60)

    จะเห็นว่า ผล sum ที่ได้ผิดไป
    ปัญหานี้คือว่า ไม่เป็น conflict serializable

  4. phantom phenomenon จะคล้ายกับ inconsistency analysis problem แต่เป็นปัญหาเนื่องจาก การ insert ข้อมูลเข้าไประหว่างการคำนวณไม่ใช่การ update (ความแตกต่างของ inconsistency analysis problem กับ phantom phenomenon คือ inconsistency analysis problem เป็น conflict serializable แต่ phantom ไม่เป็น conflict serializable)

No comments:

Post a Comment