仕組み

  • Shared modeのロックと、Exclusive modeのロックがある

    • Shared mode lock
      • 複数のトランザクションが同時に取得できる
      • 他のトランザクションがそのオブジェクトのExclusive mode lockを取得していたら、それを待たないと取れない
    • Exclusive mode lock
      • 排他ロックなので、同時に取得できるトランザクションは1つ
  • Readするとき: まずShared modeのロックを取ってから読む

  • Writeするとき: まずExclusive mode lockを取ってから書く

  • ロックを取得したトランザクションは、トランザクションCommit時(またはAbort時)まで保持し続けないといけない

  • Phantomを発生させないため、lockは、オブジェクト単位だったり、predicate lockだったり、range lockだったり

  • Deadlockが起こり得る