コンテンツへスキップ
uencoder

Snapshot Isolation

スナップショット分離では、トランザクションが一貫したスナップショット(トランザクション開始時点のデータバージョン)を読み取り、ダーティリードや非再現リードを回避するが、書き込みスキューは許容する。

目的

MVCC 上で効率的な高並行性の分離を提供する。多くのデータベースのデフォルトレベルである。

メカニズム

トランザクション開始時に一貫したスナップショット(可視バージョンのスタンプ)を取得し、読み取りにはロックを取らない。書き込み競合の検出:重なる 2 つのトランザクションが同じ行を書くと、後でコミットする側が中断される。PostgreSQL の REPEATABLE READ がまさにこれである。

ユースケース

  • MVCC での分離
  • 並行した読み取りの最適化
  • 分離レベルの選択

関連ツール

References