Distributed-dbms-failure-commit

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

分散DBMS-失敗とコミット

データベース管理システムは、多くの障害の影響を受けやすくなっています。 この章では、障害の種類とコミットプロトコルについて説明します。 分散データベースシステムでは、障害は、ソフト障害、ハード障害、およびネットワーク障害に大まかに分類できます。

ソフト故障

ソフト障害は、永続ストレージではなく、コンピューターの揮発性メモリの損失を引き起こす障害のタイプです。 ここでは、メインメモリ、バッファ、キャッシュ、レジスタなどの非永続ストレージに保存されている情報は失われます。 システムクラッシュとも呼ばれます。 ソフト障害のさまざまな種類は次のとおりです-

  • オペレーティングシステムの障害。
  • メインメモリのクラッシュ。
  • トランザクションの失敗または中止。
  • 整数オーバーフローやゼロ除算エラーなどのシステム生成エラー。
  • サポートソフトウェアの失敗。
  • 停電。

ハード障害

ハード障害は、ディスクなどの永続的または不揮発性ストレージのデータの損失を引き起こす障害のタイプです。 ディスク障害は、一部のディスクブロックのデータの破損またはディスク全体の障害を引き起こす可能性があります。 ハード障害の原因は次のとおりです-

  • 停電。
  • メディアの障害。
  • 読み書きの誤動作。
  • ディスク上の情報の破損。
  • ディスクの読み取り/書き込みヘッドクラッシュ。

予約済みの新しいフォーマット済みのすぐに使用できるディスクがある場合、ディスク障害からの回復は短時間で済みます。 それ以外の場合、期間には、購入注文の取得、ディスクの購入、および準備にかかる時間が含まれます。

ネットワーク障害

ネットワーク障害は、分散データベースまたはネットワークデータベースで一般的です。 これらは、データの分散性とネットワークを介したデータの転送のためにデータベースシステムで引き起こされるエラーで構成されます。 ネットワーク障害の原因は次のとおりです-

  • 通信リンク障害。
  • ネットワークの混雑。
  • 転送中の情報の破損。
  • サイト障害。
  • ネットワークの分割。

コミットプロトコル

データベースシステムは、障害が発生した後でもトランザクションの望ましいプロパティが維持されることを保証する必要があります。 トランザクションの実行中に障害が発生した場合、トランザクションによってもたらされたすべての変更がコミットされない可能性があります。 これにより、データベースの一貫性が失われます。 コミットプロトコルは、トランザクションの取り消し(ロールバック)またはトランザクションのやり直し(ロールフォワード)を使用してこのシナリオを防ぎます。

コミットポイント

トランザクションをコミットするか中止するかを決定する時点は、コミットポイントと呼ばれます。 コミットポイントのプロパティは次のとおりです。

  • これは、データベースが一貫している時点です。
  • この時点で、データベースによってもたらされた変更は、他のトランザクションから見ることができます。 すべてのトランザクションは、データベースの一貫したビューを持つことができます。
  • この時点で、トランザクションのすべての操作が正常に実行され、その効果がトランザクションログに記録されました。
  • この時点で、必要に応じてトランザクションを安全に元に戻すことができます。
  • この時点で、トランザクションはそれによって保持されているすべてのロックを解放します。

トランザクションの取り消し

トランザクションによってデータベースに加えられたすべての変更を取り消すプロセスは、トランザクションの取り消しまたはトランザクションのロールバックと呼ばれます。 これは、主にソフト障害の場合に適用されます。

トランザクションのやり直し

トランザクションによってデータベースに加えられた変更を再適用するプロセスは、トランザクションREDOまたはトランザクションロールフォワードと呼ばれます。 これは主に、ハード障害からの回復に適用されます。

トランザクションログ

トランザクションログは、データベースアイテムに対するトランザクション操作を追跡する順次ファイルです。 ログは本質的にシーケンシャルであるため、最初または最後から順番に処理されます。

トランザクションログの目的-

  • トランザクションをコミットまたはサポートするコミットプロトコルをサポートするため。
  • 障害後のデータベースの回復を支援するため。

通常、トランザクションログはディスクに保存されるため、ソフト障害の影響を受けません。 さらに、ログは磁気テープなどのアーカイブストレージに定期的にバックアップされ、ディスク障害からも保護されます。

トランザクションログのリスト

トランザクションログには、トランザクションのステータスに応じて5種類のリストが保持されます。 このリストは、リカバリマネージャがトランザクションのステータスを確認するのに役立ちます。 ステータスと対応するリストは次のとおりです-

  • トランザクション開始レコードとトランザクションコミットレコードを持つトランザクションは、コミットされたトランザクションであり、コミットリストで管理されます。
  • トランザクション開始レコードとトランザクション失敗レコードはあるが、トランザクション中止レコードはないトランザクションは、失敗したトランザクションであり、失敗リストに保持されます。
  • トランザクション開始レコードとトランザクション中止レコードを持つトランザクションは、中止されたトランザクションであり、中止リストに保持されます。
  • トランザクション開始レコードとトランザクションのコミット前レコードを持つトランザクションは、コミット前のトランザクションです。 すべての操作が実行されたがコミットされていないトランザクション–コミット前リストで維持されます。
  • トランザクション開始レコードはあるが、コミット前、コミット、アボート、または失敗のレコードがないトランザクションは、アクティブリストで維持されるアクティブトランザクションです。

即時更新と遅延更新

即時更新と遅延更新は、トランザクションログを保持するための2つの方法です。

*immediate update* モードでは、トランザクションが実行されると、トランザクションによって行われた更新が直接ディスクに書き込まれます。 ディスク内のデータベースに書き込む前に、古い値と更新値がログに書き込まれます。 コミット時に、ディスクに加えられた変更は永続的になります。 ロールバック時に、データベース内のトランザクションによって行われた変更は破棄され、ログに保存されている古い値から古い値がデータベースに復元されます。
*deferred update* モードでは、トランザクションが実行されると、トランザクションによってデータベースに対して行われた更新がログファイルに記録されます。 コミット時に、ログの変更がディスクに書き込まれます。 ロールバック時に、ログ内の変更は破棄され、データベースに変更は適用されません。