DDBMS-トランザクション処理システム

この章では、トランザクション処理のさまざまな側面について説明します。また、トランザクションに含まれる低レベルのタスク、トランザクションの状態、およびトランザクションのプロパティについても学習します。最後の部分では、スケジュールとスケジュールの直列化可能性について説明します。

トランザクション

トランザクションは、データベース操作のコレクションを含むプログラムであり、データ処理の論理ユニットとして実行されます。トランザクションで実行される操作には、データの挿入、削除、更新、取得などの1つ以上のデータベース操作が含まれます。これは、完全に実行されるか、まったく実行されないアトミックプロセスです。データの更新を行わずにデータの取得のみを行うトランザクションは、読み取り専用トランザクションと呼ばれます。

各高レベルの操作は、いくつかの低レベルのタスクまたは操作に分割できます。たとえば、データ更新操作は3つのタスクに分割できます-

  • read_item() −ストレージからメインメモリにデータ項目を読み取ります。

  • modify_item() −メインメモリ内のアイテムの値を変更します。

  • write_item() −変更した値をメインメモリからストレージに書き込みます。

データベースへのアクセスは、read_item()およびwrite_item()操作に制限されています。同様に、すべてのトランザクションについて、読み取りと書き込みが基本的なデータベース操作を形成します。

トランザクション操作

トランザクションで実行される低レベルの操作は次のとおりです。

  • begin_transaction −トランザクション実行の開始を指定するマーカー。

  • read_item or write_item −トランザクションの一部としてメインメモリ操作とインターリーブされる可能性のあるデータベース操作。

  • end_transaction −トランザクションの終了を指定するマーカー。

  • commit −トランザクションが完全に正常に完了し、取り消されないことを指定するシグナル。

  • rollback−トランザクションが失敗したため、データベース内のすべての一時的な変更が取り消されたことを指定するシグナル。コミットされたトランザクションはロールバックできません。

トランザクション状態

トランザクションは、アクティブ、部分的にコミット、コミット、失敗、および中止の5つの状態のサブセットを通過する場合があります。

  • Active−トランザクションが入る初期状態はアクティブ状態です。トランザクションは、読み取り、書き込み、またはその他の操作を実行している間、この状態のままになります。

  • Partially Committed −トランザクションの最後のステートメントが実行された後、トランザクションはこの状態になります。

  • Committed −トランザクションが正常に完了し、システムチェックがコミット信号を発行した後、トランザクションはこの状態になります。

  • Failed −通常の実行が続行できなくなったり、システムチェックが失敗したことが検出されると、トランザクションは部分的にコミットされた状態またはアクティブな状態から失敗した状態になります。

  • Aborted −これは、障害後にトランザクションがロールバックされ、データベースがトランザクション開始前の状態に復元された後の状態です。

次の状態遷移図は、トランザクション内の状態と、状態の変化を引き起こす低レベルのトランザクション操作を示しています。

トランザクションの望ましいプロパティ

すべてのトランザクションは、ACIDプロパティを維持する必要があります。原子性、一貫性、分離、および耐久性。

  • Atomicity−このプロパティは、トランザクションが処理のアトミックユニットであること、つまり、トランザクション全体が実行されるか、まったく実行されないことを示します。部分的な更新は存在しないはずです。

  • Consistency−トランザクションは、データベースをある一貫性のある状態から別の一貫性のある状態に移行する必要があります。データベース内のデータ項目に悪影響を与えることはありません。

  • Isolation−トランザクションは、システム内で唯一のトランザクションであるかのように実行する必要があります。同時に実行されている他の同時トランザクションからの干渉があってはなりません。

  • Durability −コミットされたトランザクションによって変更が発生した場合、その変更はデータベース内で永続的であり、障害が発生しても失われないようにする必要があります。

スケジュールと競合

多数の同時トランザクションがあるシステムでは、 schedule操作の実行の合計順序です。n個のトランザクションで構成されるスケジュールSが与えられた場合、たとえばT1、T2、T3………..Tn; トランザクションTiの場合、Tiの操作はスケジュールSに規定されているとおりに実行する必要があります。

スケジュールの種類

スケジュールには2つのタイプがあります-

  • Serial Schedules−シリアルスケジュールでは、どの時点でも、アクティブなトランザクションは1つだけです。つまり、トランザクションの重複はありません。これを次のグラフに示します-

  • Parallel Schedules−並列スケジュールでは、複数のトランザクションが同時にアクティブになります。つまり、トランザクションには、時間的に重複する操作が含まれます。これを次のグラフに示します-

スケジュールの競合

複数のトランザクションで構成されるスケジュールでは、 conflict2つのアクティブなトランザクションが互換性のない操作を実行すると発生します。次の3つの条件がすべて同時に存在する場合、2つの操作は競合していると言われます-

  • 2つの操作は、異なるトランザクションの一部です。

  • 両方の操作が同じデータ項目にアクセスします。

  • 操作の少なくとも1つはwrite_item()操作です。つまり、データ項目を変更しようとします。

直列化可能性

A serializable schedule'n'トランザクションの数は、同じ 'n'トランザクションで構成されるシリアルスケジュールと同等の並列スケジュールです。シリアル化可能なスケジュールには、並列スケジュールのCPU使用率の向上を確認しながら、シリアルスケジュールの正確さが含まれます。

スケジュールの同等性

2つのスケジュールの同等性は、次のタイプになります。

  • Result equivalence −同じ結果を生成する2つのスケジュールは、結果が同等であると言われます。

  • View equivalence −同様の方法で同様のアクションを実行する2つのスケジュールは、ビューが同等であると言われます。

  • Conflict equivalence − 2つのスケジュールは、両方に同じトランザクションセットが含まれ、競合する操作のペアの順序が同じである場合、競合が同等であると言われます。