Neunomizuの日記

俺だけが俺だけじゃない

# CMU DB 17. Two-Phase Locking Concurrency Control

tags: CMU DB

授業

transaction locks

DBMSは一元化されたlock managerを持っている。

two-phase locking(2PL)

悲観的な(pessimistic)並行制御プロトコルトランザクションがDB内部のオブジェクトをアクセスすることを許可する.

プロトコルトランザクションが前もって実行するクエリの全てを知っている必要はない.

以下の2段階で行われる.

衝突直列性の保証するのに十分だが,cascading aborts(あるトランザクションが中断したとき,他のトランザクションも中断し巻き戻す必要があること)

strong strict two-phase locking(SSPL)

2PLの変種.トランザクションはlockを修了したときのみ解放する.shrinking phaseがない.

この方法の長所はDBMSはcascading abortsにならないという点がある.DBMSは変更の加わったtuplesの元々の値を復元するだけで中断したトランザクションを巻き戻せる.

2PL deadlock handling

deadlockは互いが解放されることを待っている周期的なトランザクションのこと.2つの取り組み方がある.

  • deadlock detection
    • トランザクションをノードとして考える.
    • システムが定期的にグラフ内の循環を検知し,どう破壊するかを考える.
  • deadlock prevenction

lock granularities

大量のtuplesを更新する際に,一気にlockをlock managerに要求するとoverheadが生じる.これを解消するために荒いlockを作るというもの.

  • intention-shared(IS)
    • shared lockと共に低レベルにおける明白なlockingを示す
  • intention-exclusive(IX)
    • exclusive/shared lockと共に低レベルにおける明白なlockingを示す
  • shared+intention-exclusive(SIX)
    • ノードに根付いた部分木はshared modeではっきりとlockされ,はっきりとlockすることはexclusive-mode locksと共に低レベルにおいて行われている

conclusion

2PLはほとんどのトランザクションで使われている.

感想

OSか!