- [[Two phase lock]]
- [[Serializability]]を実現するために使われる
- [[Pessimistic Concurrency Control]]
- Read-Read以外は全部ブロックする
- [[Snapshot isolation]]と異なり、リーダーはライターをブロックする & ライターはリーダーもブロックする
# 仕組み
- 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]]が起こり得る