私はSQL Server READ COMMITTED SNAPSHOT
とSNAPSHOT
分離レベルの違いを調査していて、次のリソースに出会いました。
ほとんどのアプリケーションでは、次の理由から、スナップショットアイソレーションよりも行バージョン管理を使用したコミットコミットアイソレーションをお勧めします。
スナップショット分離よりも少ないtempdbスペースを消費します。
スナップショットアイソレーションは、行のバージョン管理を使用した読み取りコミットアイソレーションには適用できない更新の競合に対して脆弱です。スナップショット分離で実行されているトランザクションがデータを読み取ってから別のトランザクションで変更されると、スナップショットトランザクションによる同じデータへの更新により更新の競合が発生し、トランザクションが終了してロールバックされます。これは、行のバージョン管理を使用した読み取りコミット分離の問題ではありません。
私はこれらのトピックにやや不慣れですが、上記のリンクから2つの箇条書きを理解できないようです。
これらのモードでtempdbスペースが異なるのはなぜですか?一方は他方よりも詳細なバージョン管理を保存しますか?
スナップショット分離は、更新の競合に対してより脆弱なのはなぜですか?