3-I-4【トランザクション処理】同時実行制御と障害回復の概要
ブログ教材(コード)一覧
音声解説はこちらのWebページ最上部の▶︎を押してください
バックグラウンド再生も可能です。
【過去問はこちら】どんな問題が出るのか事前に確認しよう!
データベースシステムにおいて、複数のユーザーが同時にアクセスする場合、データの整合性を保つために同時実行制御(排他制御)が不可欠です。また、システムの障害やトラブルに対処するためには、障害回復機能が重要な役割を果たします。本記事では、同時実行制御と障害回復の必要性と機能について、主要な用語とともに解説します。
1. 同時実行制御(排他制御)
1.1 同時実行制御の必要性
**同時実行制御(排他制御)**は、複数のトランザクションが同時にデータにアクセスする場合の整合性を確保するために必要な機能です。異なるトランザクションが同じデータに同時にアクセス・変更しようとした場合、データの不整合が生じる可能性があります。これを防ぐために、データベースは特定のデータに対するアクセスを排他的に制御する必要があります。
トランザクション:データベースにおける一連の処理単位で、通常、データベースに対する複数の操作を含みます。トランザクションは、ACID特性を保証する必要があります。
ACID特性:
Atomicity(原子性):トランザクションは全体として成功するか全体として失敗するかであり、中途半端な状態が存在しないこと。
Consistency(整合性):トランザクションが実行される前後でデータの整合性が保たれること。
Isolation(独立性):同時実行中のトランザクションが互いに干渉しないこと。
Durability(永続性):トランザクションが完了した後、その結果は永続的に保存されること。
1.2 同時実行制御の機能
ロック:データベースでは、トランザクションがデータにアクセスする際にロックを使用して、他のトランザクションがそのデータを変更できないようにします。ロックの種類には、**排他ロック(Exclusive Lock)と共有ロック(Shared Lock)**があります。
デッドロック:複数のトランザクションが互いにロックを待ち続ける状況で、システムが停止してしまうことです。デッドロックの検出と解決が必要です。
2相コミットメント(2PC):分散トランザクションで使用される技術で、トランザクションが全体で成功するか、すべてがロールバックされるかを保証するための手続きです。
2. 障害回復
2.1 障害回復の必要性
障害回復は、システム障害が発生した際にデータの一貫性と整合性を回復するための機能です。システムのクラッシュや予期しないエラーによってデータが失われたり、部分的に更新されたりすることを防ぐために、リカバリ機能が重要です。
2.2 障害回復の機能
障害回復機能は、障害が発生した場合にデータベースが整合性のある状態に戻るためのプロセスを提供します。
チェックポイント:
データベースは定期的にチェックポイントを設定し、その時点でのデータの状態を保存します。障害が発生した場合、最も最近のチェックポイントから復旧できます。
バックワードリカバリ(ロールバック):
障害が発生した場合、システムは直前の一貫性のある状態に戻すためにバックワードリカバリ(ロールバック)を行います。これは、障害後に実行されたトランザクションを元に戻すプロセスです。
フォワードリカバリ(ロールフォワード):
システムが正常に復旧した後、未完了のトランザクションを再実行することにより、最終的なデータの一貫性を回復します。フォワードリカバリ(ロールフォワード)では、障害前に行われたトランザクションを再度適用します。
ここから先は
3-I データベース【テクノロジ系】
このマガジンでは、データベースに関する基本的な知識と技術について解説しています。具体的には、データベース方式、データベース設計、データ操作…
この記事が気に入ったらチップで応援してみませんか?