CMU 15-445 Timestamp Ordering Concurrency Control

  • Timestamp Ordering Concurrency Control
    • optimistic な方法
    • 2PL がロックを使ってserializableになるのに対して、serializableでないならアボートしてリトライする
    • トランザクションの実行時にタイムスタンプをふって、自分が触ったオブジェクトが、より新しいタイムスタンプを持つトランザクションが操作していないか確認する
      • もしもしそうなら未来に実行されるべきトランザクションの内容を見ていることになるのでserializableではない
  • Optimistic Concurrency Control
    • read 時にローカルコピーを作ってwriteするときにやってよいか確認する
  • Partition based T/O
  • Phantom problem
    • ロックをrowごとに取ると隙間にインサートされることを防げない
    • 同じSELECTが異なる結果を返すことがある
  • Predicate locking
    • 論理演算からロックを生成する
    • 次元が増えると破綻する
  • Index locking
    • 扱う値の範囲のindexをロックする
    • インデックスがないなら全ページやテーブルをロックする
  • Phantom を防ぐと重いので Isolation level を導入する
    • serializable より低い分離レベルなら phantom がありうる