Snapshot Isolation
スナップショット分離では、トランザクションが一貫したスナップショット(トランザクション開始時点のデータバージョン)を読み取り、ダーティリードや非再現リードを回避するが、書き込みスキューは許容する。
目的
MVCC 上で効率的な高並行性の分離を提供する。多くのデータベースのデフォルトレベルである。
メカニズム
トランザクション開始時に一貫したスナップショット(可視バージョンのスタンプ)を取得し、読み取りにはロックを取らない。書き込み競合の検出:重なる 2 つのトランザクションが同じ行を書くと、後でコミットする側が中断される。PostgreSQL の REPEATABLE READ がまさにこれである。
ユースケース
- MVCC での分離
- 並行した読み取りの最適化
- 分離レベルの選択