Snapshot isolation
Snapshot isolation(SI、スナップショット アイソレーション)は、データベース管理システムのトランザクション処理において並行動作時のデータの一貫性を保証するためのトランザクションの分離レベルの一種で、次の性質を持つ。
トランザクションは一貫性のあるデータベースのスナップショット(トランザクション開始時に存在していた最後にコミットされた値)を読む。
トランザクションの更新がスナップショット以降に他のトランザクションがコミットした更新と競合しない場合に限りトランザクションが成功する。
Snapshot isolation はSQL Anywhere, InterBase, Firebird, Oracle, PostgreSQL, MongoDB, Microsoft SQL Server (2005以降) などの主なデータベース管理システムで採用されている。それはこの分離レベルがSerializable isolationよりも良い性能が実現でき、かつ多くの並列性からくる異常 (anomalies) を回避することができるためである (すべてが回避できるわけではない)。