SkillStack
テクノロジ系12 / 25問

データベーススペシャリスト試験 令和3年度 秋期 午前II 問12

分散データベースのトランザクションが複数のサブトランザクションに分割され、複数のサイトで実行されるとき、トランザクションのコミット制御に関する記述のうち、適切なものはどれか。

選択肢を押すと答え合わせができます。

正解と解説を見る

【正解】イ

2相コミットでは、主サイトにある調停者が、複数サイトの参加者に対してトランザクション全体をコミットするかロールバックするかを統一的に決定します。第1相では、各参加者にコミット可能かを問い合わせ、参加者は必要な処理やログ記録を行ってから了承又は拒否を返します。第2相では、その結果に基づく最終決定を全参加者へ通知します。しかし、参加者が了承を返した後に通信障害や主サイトの障害が発生すると、最終指示を受信できないことがあります。この参加者は自分だけではコミットとロールバックのどちらも選べず、決定を確認できるまで待機するため、未決定状態になる場合があります。

アの記述は誤りです。全サイトが了承した場合、主サイトはトランザクション全体にコミットを指示します。サブトランザクションごとに異なる決定を出すと、原子性が失われます。

ウの記述は誤りです。一つでもコミット不能又はロールバックとなれば、トランザクション全体をロールバックします。一部だけ成功させる方式ではありません。

エの記述は誤りです。各サイトが独自にコミットすると、一部だけが確定する可能性があり、サイト間の一貫性を保証できません。

【ポイント】 2相コミットの目的は、分散トランザクションの原子性を保ち、全参加者を全てコミット又は全てロールバックにそろえることです。 弱点は、障害時に参加者が最終決定を待つブロッキングが起こり得ることです。

出典:令和3年度 秋期 データベーススペシャリスト試験 午前II 問12
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。

この回の25問を、アプリで通しで解く

  • 本番と同じ問題数・制限時間で通し演習(模試モード)
  • 間違えた問題は自動で「復習すべき問題」に回る
  • 解説で分からない点はAIに質問できる
SkillStackで無料で始める