トランザクション (データベース エンジン)

トランザクションは、論理的な 1 つの作業単位として実行される一連の操作です。論理的な 1 つの作業単位がトランザクションとして有効であるには、ACID と呼ばれる 4 つのプロパティ (原子性、一貫性、分離性、および持続性) を備えている必要があります。

  • 原子性
    トランザクションは、分離できない 1 つの作業単位であり、そのデータ変更がすべて実行されるか、まったく実行されないかのどちらかでなければなりません。

  • 一貫性
    トランザクションの完了時に、すべてのデータが一貫した状態になければなりません。リレーショナル データベースの場合、すべてのデータの整合性を維持するため、トランザクションの変更に対してすべてのルールが適用される必要があります。B ツリー インデックスや二重リンク リストなどのすべての内部データ構造は、トランザクションの終了時に正しくなければなりません。

  • 分離性
    同時実行トランザクションによって行われる変更は、他の同時実行トランザクションによって行われる変更と相互に独立している必要があります。トランザクションは、他の同時実行トランザクションが変更する前の状態のデータを認識するか、2 番目のトランザクションが完了した後のデータを認識するかのどちらかであり、中間の状態は認識しません。これをシリアル化可能性と呼んでいます。最初のデータを再度読み込み、一連のトランザクションを実行しても、元のトランザクションを実行したときと同じ状態で終了できるからです。

  • 持続性
    トランザクションの完了後、その結果がシステム内で持続されます。システム障害が発生しても、変更結果は持続されます。

トランザクションの指定と実行

SQL プログラマは、データの論理的な一貫性が確保されるように、トランザクションを開始および終了しなければなりません。プログラマは、組織のビジネス ルールに合わせて、データが一貫した状態に保たれるようにデータ修正の順序を定義する必要があります。これらの変更指示ステートメントは 1 つのトランザクションに含め、SQL Server データベース エンジンがトランザクションの物理的な整合性を設定できるようにします。

データベース エンジンのインスタンスなど、企業のデータベース システムは、各トランザクションの整合性を確保するメカニズムを用意する必要があります。データベース エンジンは、次の機能を提供します。

  • トランザクションの分離性を保持するロック機能。

  • トランザクションの持続性を設定するログ機能。サーバー ハードウェア、オペレーティング システム、またはデータベース エンジンのインスタンス自体で障害が発生した場合でも、データベース エンジンのインスタンスは再起動時にトランザクション ログを使用して、中断したトランザクションをシステム障害が発生した時点まで自動的にロールバックします。

  • トランザクションの原子性と一貫性を設定するトランザクション管理機能。トランザクションは開始したら、正常に完了する必要があります。正常に完了しない場合は、データベース エンジンのインスタンスにより、トランザクションの開始後に加えた変更がすべて取り消されます。