基本情報技術者試験 練習問題 65:データベースの排他制御
データベースのトランザクション処理における「デッドロック」に関する記述として、正しいものはどれか。
- 複数のトランザクションが同時に同じデータを更新した結果、データの不整合が発生してしまう現象である。
- トランザクションの処理中にシステム障害が発生し、データベース全体が利用できなくなる現象である。
- 複数のトランザクションが互いに相手の確保している資源の解放を待ち合い、処理が停止する現象である。
- トランザクションが異常終了した際に、更新中のデータを元の正しい状態に戻すことができない現象である。
- 他のトランザクションが更新中の確定していないデータを読み取ってしまい、矛盾が生じてしまう現象である。
正解と解説を見る
正解:複数のトランザクションが互いに相手の確保している資源の解放を待ち合い、処理が停止する現象である。
データベースにおけるデッドロックは、複数のトランザクションが互いに相手の確保している資源の解放を待ち合い、処理が停止する現象です。
【正解の理由】
「デッドロック」は、2つ以上の処理がお互いに相手が占有しているデータ(資源)の解放を待ち続けることで、どちらも先に進めなくなってしまう状態を指します。
【不正解の理由】
• 「複数のトランザクションが同時に同じデータを更新した結果、データの不整合が発生してしまう」という説明は、ロストアップデート(更新消失)などの不整合に関するものです。
• 「トランザクションの処理中にシステム障害が発生し、データベース全体が利用できなくなる」という説明は、システム障害(ダウン)に関するものであり、デッドロック特有の現象ではありません。
• 「トランザクションが異常終了した際に、更新中のデータを元の正しい状態に戻すことができない」という説明は、ロールバックの失敗に関するものです。
• 「他のトランザクションが更新中の確定していないデータを読み取ってしまい、矛盾が生じてしまう」という説明は、ダーティリードと呼ばれる現象に関するものです。