Dbms-transaction

提供:Dev Guides
移動先:案内検索

DBMS-トランザクション

トランザクションは、タスクのグループとして定義できます。 単一のタスクは、それ以上分割できない最小の処理単位です。

簡単な取引の例を見てみましょう。 銀行の従業員がAのアカウントからBのアカウントにRs 500を転送するとします。 この非常にシンプルで小さなトランザクションには、いくつかの低レベルのタスクが含まれます。

  • Aのアカウント*
Open_Account(A)
Old_Balance = A.balance
New_Balance = Old_Balance - 500
A.balance = New_Balance
Close_Account(A)
  • Bのアカウント*
Open_Account(B)
Old_Balance = B.balance
New_Balance = Old_Balance + 500
B.balance = New_Balance
Close_Account(B)

ACIDプロパティ

トランザクションはプログラムの非常に小さな単位であり、いくつかの低レベルのタスクを含む場合があります。 データベースシステムのトランザクションは、正確性、完全性を確保するために、* A トミシティ、 C 一貫性、 I 隔離、および D *耐久性(一般にACIDプロパティとして知られる)を維持する必要があります、およびデータの整合性。

  • Atomicity -このプロパティは、トランザクションをアトミックユニットとして扱う必要があること、つまり、すべての操作が実行されるか、まったく実行されないことを示します。 トランザクションが部分的に完了したままになっているデータベースに状態があってはなりません。 状態は、トランザクションの実行前、またはトランザクションの実行/中止/失敗の後に定義する必要があります。
  • 一貫性-データベースは、トランザクション後も一貫した状態を維持する必要があります。 データベースにあるデータに悪影響を与えるトランザクションはありません。 トランザクションの実行前にデータベースが一貫した状態にあった場合、トランザクションの実行後もデータベースの一貫性を保つ必要があります。
  • 耐久性-システムに障害が発生したり再起動した場合でも、データベースは最新の更新をすべて保持できる耐久性が必要です。 トランザクションがデータベース内のデータのチャンクを更新してコミットすると、データベースは変更されたデータを保持します。 データがディスクに書き込まれる前にトランザクションがコミットされてもシステムに障害が発生した場合、システムが動作に戻るとそのデータが更新されます。
  • 分離-複数のトランザクションが同時に並行して実行されているデータベースシステムでは、分離のプロパティにより、すべてのトランザクションが実行され、システム内の唯一のトランザクションであるかのように実行されます。 トランザクションは、他のトランザクションの存在に影響しません。

シリアライズ可能性

マルチプログラミング環境でオペレーティングシステムによって複数のトランザクションが実行されている場合、1つのトランザクションの命令が他のトランザクションとインターリーブされる可能性があります。

  • スケジュール-トランザクションの時系列の実行シーケンスはスケジュールと呼ばれます。 スケジュールには多くのトランザクションを含めることができ、各トランザクションは多数の命令/タスクで構成されます。
  • シリアルスケジュール-1つのトランザクションが最初に実行されるようにトランザクションが調整されるスケジュールです。 最初のトランザクションがそのサイクルを完了すると、次のトランザクションが実行されます。 トランザクションは次々に注文されます。 トランザクションはシリアル方式で実行されるため、このタイプのスケジュールはシリアルスケジュールと呼ばれます。

マルチトランザクション環境では、シリアルスケジュールがベンチマークと見なされます。 トランザクション内の命令の実行シーケンスを変更することはできませんが、2つのトランザクションの命令をランダムに実行することができます。 2つのトランザクションが相互に独立しており、異なるデータセグメントで動作している場合、この実行は問題ありません。ただし、これら2つのトランザクションが同じデータを処理している場合、結果は異なる場合があります。 この常に変化する結果は、データベースを一貫性のない状態にする可能性があります。

この問題を解決するために、トランザクションがシリアル化可能であるか、トランザクション間の等価関係がある場合、トランザクションスケジュールの並列実行を許可します。

等価スケジュール

等価スケジュールは、次のタイプにすることができます-

結果の等価性

2つのスケジュールが実行後に同じ結果を生成する場合、それらは同等の結果であると言われます。 ある値に対しては同じ結果が得られ、別の値のセットに対しては異なる結果が得られる場合があります。 そのため、この同等性は一般に重要とは見なされません。

同等の表示

両方のスケジュールのトランザクションが同様の方法で同様のアクションを実行する場合、2つのスケジュールは同等と見なされます。

たとえば-

  • TがS1で初期データを読み取る場合、S2で初期データも読み取ります。
  • TがSでJによって書き込まれた値を読み取る場合、SでJによって書き込まれた値も読み取ります。
  • TがS1のデータ値に対して最終書き込みを実行する場合、S2のデータ値に対して最終書き込みも実行します。

競合同等

次のプロパティがある場合、2つのスケジュールは競合します-

  • 両方とも別々のトランザクションに属します。
  • 両方が同じデータ項目にアクセスします。
  • そのうちの少なくとも1つは「書き込み」操作です。

操作が競合する複数のトランザクションを持つ2つのスケジュールは、次の場合にのみ競合と同等と言われます-

  • 両方のスケジュールには、同じトランザクションのセットが含まれています。
  • 競合する操作のペアの順序は、両方のスケジュールで維持されます。

注意-ビューと同等のスケジュールはシリアル化可能ビューであり、競合と同等のスケジュールは競合シリアル化可能です。 競合するシリアル化可能なスケジュールはすべて、ビューもシリアル化可能です。

取引の状態

データベース内のトランザクションは、次のいずれかの状態になります-

トランザクション状態

  • アクティブ-この状態では、トランザクションが実行されています。 これは、すべてのトランザクションの初期状態です。
  • 部分的にコミット-トランザクションが最終操作を実行するとき、部分的にコミットされた状態にあると言われます。
  • Failed -データベース回復システムによって行われたチェックのいずれかが失敗した場合、トランザクションは失敗状態にあると言われます。 失敗したトランザクションはそれ以上続行できなくなります。
  • Aborted -チェックのいずれかが失敗し、トランザクションが失敗した状態に達した場合、Recovery Managerはデータベース上のすべての書き込み操作をロールバックして、データベースを実行前の元の状態に戻しますトランザクション。 この状態のトランザクションは中止と呼ばれます。 データベース回復モジュールは、トランザクションが中断した後、2つの操作のいずれかを選択できます-
  • トランザクションを再開します
  • トランザクションを強制終了します
  • Committed -トランザクションがすべての操作を正常に実行した場合、コミットされたと言われます。 その効果はすべて、データベースシステム上で永続的に確立されています。