【IPシラバス6.3】(1) 同時実行制御(排他制御)

本ページはPRが含まれています
正解数: 0/0 (0%)

全体のどこを学習しているのか把握しながら進めましょう。IPAシラバス原本PDFはこちら

このページは以下の「ITパスポート シラバス6.3」学習用コンテンツです。

◆大分類:9.技術要素
◆中分類:21.データベース

◆小分類◆見出し◆学習すべき用語
57.トランザクション処理(1) 同時実行制御(排他制御)トランザクション
ACID 特性
デッドロック
2相コミットメント
見出し

トランザクションとは?

トランザクションとはデータベースにおける一連の処理の単位を指します。

この処理は全てが成功するか、全てが失敗するかのいずれかでなければなりません。

トランザクションはデータの整合性を保つために重要で、複数の利用者が同時にデータベースへアクセスする場合でも一貫性が保たれるよう制御されています。処理が中断した際にはデータが元の状態に戻されるため、システムの安定性と信頼性が確保されます。

トランザクションに関する学習用問題にトライ!

問題
トランザクションの特性として最も適切なものはどれですか?

  1. データ処理の一部だけが反映される
  2. 一連の処理が全て成功するか全て失敗する
  3. 処理が完了しても元の状態に戻すことはできない
%%replace6%%

正解
2  一連の処理が全て成功するか全て失敗する

解説
トランザクションは全ての処理が成功するか全てが失敗するという特性を持っています。これにより、データベースの一貫性が維持されます。

選択肢1はトランザクションの性質とは異なり、選択肢3はトランザクションの可逆性を否定するものであり不適切です。


問題
トランザクションが途中で失敗した場合の挙動として正しいものはどれですか?

  1. 処理はそのまま継続される
  2. 一部の変更は反映されるが、残りは中断される
  3. 全ての変更が取り消される
%%replace6%%

正解
3 全ての変更が取り消される

解説
トランザクションが失敗した場合はデータベースの整合性を保つために全ての変更が取り消されます。この仕組みがあることで、システムの安定性が確保されます。

選択肢1や2はデータの一貫性を損なう可能性があるため誤りです。


問題
複数のトランザクションが同時に実行される場合の課題として正しいものはどれですか?

  1. トランザクション間でのデータの整合性が損なわれる可能性がある
  2. 各トランザクションは全く影響を与えずに実行される
  3. トランザクションの順序に依存しない結果が常に得られる
%%replace6%%

正解
1 トランザクション間でのデータの整合性が損なわれる可能性がある

解説
同時に複数のトランザクションが実行される場合、適切な制御がなければデータの整合性が損なわれる可能性があります。

選択肢2や3は正確ではなく、誤った理解を招きます。


ACID特性とは?

ACID特性とはデータベースのトランザクションが満たすべき4つの重要な特性を指します。

ACIDはAtomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、Durability(永続性)の頭文字を取ったものです。

これらの特性により、トランザクション処理が安全かつ確実に実行されることが保証されます。ACID特性はデータベースの信頼性を支える基盤であり、データの整合性を維持するために不可欠です。

ACID特性に関する学習用問題にトライ!

問題
ACID特性の中で、トランザクションが完了した後にデータが確実に保存されることを保証する特性はどれですか?

  1. 原子性
  2. 一貫性
  3. 永続性
%%replace6%%

正解
3 永続性

解説
ACID特性の中で永続性はトランザクションが完了した後のデータの確実な保存を保証します。

選択肢1の原子性はトランザクションの全体が一つの不可分な単位であることを意味し、選択肢2の一貫性はデータが常に一貫した状態を保つことを意味します。


問題
ACID特性の中で、トランザクションが部分的に完了しても中断されることなく全体が一つの単位として扱われる特性はどれですか?

  1. 独立性
  2. 原子性
  3. 一貫性
%%replace6%%

正解
2 原子性

解説
原子性はトランザクション全体が一つの単位として扱われ、部分的な処理が許されない特性です。処理が途中で中断した場合でもデータの一貫性が保たれます。

選択肢1の独立性は他のトランザクションからの影響を受けないことを意味し、選択肢3の一貫性はトランザクションがデータを整合性のある状態に保つことを指します。


問題
ACID特性において、複数のトランザクションが同時に実行される場合でも各トランザクションが互いに干渉せずに実行されることを保証する特性はどれですか?

  1. 一貫性
  2. 独立性
  3. 永続性
%%replace6%%

正解
2 独立性

解説
ACID特性の独立性は複数のトランザクションが同時に実行されても、互いに影響を与えずに実行されることを保証します。

選択肢1の一貫性はデータの整合性を保つことを意味し、選択肢3の永続性はトランザクションが完了した後のデータ保存を保証するものです。


デッドロックとは?

デッドロックとは複数のトランザクションが互いに相手のリソースを待ち続けることで発生する状態を指します。

デッドロックが発生するとどのトランザクションも進行できなくなり、システム全体が停止してしまいます。

この問題は同時実行制御の一部であり、デッドロックを回避するための手法としてタイムアウトやデッドロック検出アルゴリズムが使用されます。データベース管理において、この現象を避けることは非常に重要です。

デッドロックに関する学習用問題にトライ!

問題
デッドロックとは何を指す状態ですか?

  1. 複数のトランザクションが互いにリソースを奪い合うが処理を進めることができる状態
  2. トランザクションが完了せずに繰り返し実行される状態
  3. 複数のトランザクションが互いにリソースを待ち続け、どれも進行できない状態
%%replace6%%

正解
3 複数のトランザクションが互いにリソースを待ち続け、どれも進行できない状態

解説
デッドロックは複数のトランザクションが互いにリソースを待ち続けるため、どのトランザクションも進行できなくなる状態を指します。

選択肢1はリソース競合の一部を示しますが完全なデッドロックではありません。選択肢2はデッドロックではなく、無限ループに近い現象を指しています。


問題
デッドロックを回避する手法として最も適切なものはどれですか?

  1. タイムアウトを設定する
  2. トランザクションを無制限に再試行する
  3. リソースをランダムに取得する
%%replace6%%

正解
1 タイムアウトを設定する

解説
デッドロックを回避する手法としてタイムアウトを設定し、一定時間内に処理が完了しない場合にトランザクションを中断することが有効です。

選択肢2は無限にリソースを待つ可能性があり、選択肢3は制御が不十分なため適切ではありません。


問題
デッドロックが発生した場合のシステムの対応として適切なものはどれですか?

  1. 全てのトランザクションを強制的に完了させる
  2. 任意のトランザクションを中断し、リソースを開放する
  3. 全てのリソースを無条件に解放する
%%replace6%%

正解
2 任意のトランザクションを中断し、リソースを開放する

解説
デッドロックが発生した場合システムは任意のトランザクションを中断し、リソースを開放することで他のトランザクションの進行を可能にします。

選択肢1はシステムの安定性を損ない、選択肢3は全リソースを不適切に解放するため、他のトランザクションに影響を与えかねません。


2相コミットメントとは?

2相コミットメントは分散データベースにおけるトランザクション処理を確実に実行するためのプロトコルです。

この手法ではトランザクションの完了を確認するために2つの段階を経ます。まず、全ての関連データベースがトランザクションの準備を完了したことを確認し、その後、トランザクションのコミット(確定)またはロールバック(取り消し)を行います。このプロセスにより、分散環境においてもデータの整合性と信頼性が保たれます。

2相コミットメントに関する学習用問題にトライ!

問題
2相コミットメントの第1フェーズで行われる処理はどれですか?

  1. 全てのデータベースにコミットを命令する
  2. 各データベースの準備状況を確認する
  3. トランザクションを強制的に完了させる
%%replace6%%

正解
2 各データベースの準備状況を確認する

解説
2相コミットメントの第1フェーズでは各データベースがトランザクションの準備を完了しているかどうかを確認します。

選択肢1のコミット命令は第2フェーズで行われ、選択肢3の強制完了はこのプロトコルの目的に反しています。


問題
2相コミットメントにおいて、第2フェーズで行われる処理はどれですか?

  1. 準備フェーズに戻る
  2. データベース間の同期を取る
  3. コミットまたはロールバックを実行する
%%replace6%%

正解
3 コミットまたはロールバックを実行する

解説
第2フェーズではトランザクションのコミットまたはロールバックが実行され、全てのデータベースに対して変更が確定または取り消されます。

選択肢1は誤りで、選択肢2は第1フェーズで行われることが多いです。


問題
2相コミットメントが使用される主な目的は何ですか?

  1. トランザクションの高速化
  2. 分散トランザクションの整合性確保
  3. データベースの同期化
%%replace6%%

正解
2 分散トランザクションの整合性確保

解説
2相コミットメントは分散データベース間でのトランザクション処理において整合性を確保するために使用されます。

選択肢1の高速化は副次的な効果に過ぎず、選択肢3はデータの整合性を確保する手段として2相コミットメントが機能します。

見出し