Skip to main content

スナップショットの分離とは何ですか?

スナップショット分離は、トランザクション処理とデータベースのプロパティであり、トランザクションで作成されたすべての読み取りを保証します。同じデータベーススナップショットを参照してください。これは、更新が他の同時更新と競合しない場合、トランザクションがリクエストの処理を正常に処理することにコミットすることを意味します。スナップショット分離は、並行性で一般的に発生する問題を回避する分離レベルを提供するマルチバージョンの並行性のコントロールアルゴリズムです。この分離は、いくつかの異なる構造化クエリ言語(SQL)サーバーによって実装されており、最小限のシリアル化異常で動作します。ただし、スナップショットの分離は、サーバーの完全なシリアル化可能性を保証しません。comersシリアル化できず、スナップショット分離なしでシリアル化の異常に遭遇するデフォルトの分離レベルが含まれています。これにより、大規模なシステムが毎日多数の分離エラーを発生させる可能性があり、それがデータの破損につながる可能性があります。特に、データの倉庫アプリケーションに見られるものです。この状態でシステムが動作する理由は、より低い分離レベルで実行されるアプリケーションが、深刻なエラーが発生しないと効率を改善する可能性があるためです。システムにスナップショット分離を含めると、これらの異常が減少します。操作時間と考慮されるエラーの量を取得するとき—効率はさらに向上します。

ination完全なシリアル化性とは対照的に、一部のデータベースはスナップショット分離を提供しますが、このタイプの分離を利用してデータベース内で発生する可能性のある異常もあります。一貫性のインターリーブを維持するトランザクション、または交互の層に配置されるため、これらの異常はデータの一貫性違反につながる可能性があります。問題を解決し、これらのような異常を防ぐ1つの方法は、人工ロックの導入と矛盾する更新でアプリケーションを操作することであり、その後、すべてのトランザクション間の競合の分析が続きました。ただし、これらの異常を解決する別の方法は、データベースシステムの並行制御のアルゴリズムを変更して、実行時にスナップショット分離の異常の自動検出と予防を行うことです。これは、重要なアプリケーションまたは任意のアプリケーションで行うことができますが、シリアル化可能な分離を提供します。SQL Serverの初期バージョンがロックを並行性の基礎として使用した場合、スナップショット分離は、パフォーマンスの改善を目的とした行バージョンの強化に依存します。このパフォーマンスは、それらを避けて読み取りまたは書き込みブロックでシナリオに遭遇すると改善されます。