Distributed-dbms-transaction-processing-systems

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

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

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

トランザクション

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

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

  • * read_item()*-ストレージからメインメモリにデータ項目を読み取ります。
  • * modify_item()*-メインメモリ内のアイテムの値を変更します。
  • * write_item()*-変更された値をメインメモリからストレージに書き込みます。

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

トランザクション操作

トランザクションで実行される低レベルの操作は-

  • begin_transaction -トランザクション実行の開始を指定するマーカー。
  • read_itemまたはwrite_item -トランザクションの一部としてメインメモリ操作とインターリーブされるデータベース操作。
  • end_transaction -トランザクションの終了を指定するマーカー。
  • コミット-トランザクション全体が正常に完了し、取り消されないことを指定する信号。
  • ロールバック-トランザクションが失敗し、データベース内のすべての一時的な変更が取り消されたことを指定する信号。 コミットされたトランザクションはロールバックできません。

取引状態

トランザクションは、アクティブ、部分的にコミット、コミット、失敗、中止の5つの状態のサブセットを通過できます。

  • アクティブ-トランザクションが開始する初期状態はアクティブ状態です。 トランザクションは、読み取り、書き込み、またはその他の操作を実行している間、この状態のままです。
  • 部分的にコミット-トランザクションの最後のステートメントが実行された後、トランザクションはこの状態に入ります。
  • Committed -トランザクションが正常に完了し、システムチェックがコミット信号を発行した後、トランザクションはこの状態に入ります。
  • Failed -通常の実行が続行できないか、システムチェックが失敗したことが検出されると、トランザクションは部分的にコミットされた状態またはアクティブな状態から失敗した状態になります。
  • 中止-これは、障害後にトランザクションがロールバックされ、データベースがトランザクション開始前の状態に復元された後の状態です。

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

状態遷移図

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

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

  • *アトミック性-このプロパティは、トランザクションが処理のアトミック単位であること、つまり、トランザクション全体が実行されるか、まったく実行されないことを示します。 部分的な更新は存在しないはずです。
  • 一貫性-トランザクションは、データベースをある一貫性のある状態から別の一貫性のある状態にする必要があります。 データベース内のデータ項目に悪影響を与えてはなりません。
  • 分離-トランザクションは、システム内で唯一のものであるかのように実行する必要があります。 同時に実行されている他の同時トランザクションからの干渉があってはなりません。
  • 耐久性-コミットされたトランザクションが変更をもたらす場合、その変更はデータベース内で永続的であり、障害が発生しても失われないようにする必要があります。

スケジュールと競合

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

スケジュールの種類

スケジュールには2種類あります-

  • シリアルスケジュール-シリアルスケジュールでは、どの時点でも、1つのトランザクションのみがアクティブになります。 トランザクションの重複はありません。 これは、次のグラフに描かれています-

シリアルスケジュール

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

並列スケジュール

スケジュールの矛盾

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

  • 2つの操作は異なるトランザクションの一部です。
  • 両方の操作が同じデータ項目にアクセスします。
  • 操作の少なくとも1つはwrite_item()操作です。 データ項目を変更しようとします。

シリアライズ可能性

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

スケジュールの同等性

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

  • 結果の等価-同一の結果を生成する2つのスケジュールは、結果が等価であると言われます。
  • 同等のビュー-同様の方法で同様のアクションを実行する2つのスケジュールは、同等のビューであると言われます。
  • 競合等価-2つのスケジュールは、両方に同じトランザクションセットが含まれ、競合する操作のペアの順序が同じ場合、競合等価と呼ばれます。