平成27年度 春期 データベーススペシャリスト試験 午前II 問12
【問題12】
分散データベースのトランザクションは複数のサブトランザクションに分割され、複数のサイトで実行される。このとき、トランザクションのコミット制御に関する記述のうち、適切なものはどれか。
2相コミットでは、サブトランザクションが実行される全てのサイトからコミット了承応答が主サイトに届いても、主サイトはサブトランザクションごとにコミット又はロールバックの異なる指示をする場合がある。
2相コミットを用いても、サブトランザクションが実行されるサイトに主サイトの指示が届かず、サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
2相コミットを用いると、サブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
集中型データベースのコミット制御である1相コミットで、個々のサイトが独自に分散データベースのコミットを行った場合でも、サイト間のデータベースの一貫性は保証できる。
【解説】
ア: 2相コミットでは、サブトランザクションが実行される全てのサイトからコミット了承応答が主サイトに届いても、主サイトはサブトランザクションごとにコミット又はロールバックの異なる指示をする場合がある。
誤り。2相コミットでは、全てのサイトからコミット了承応答を受け取った場合、主サイトは全てのサブトランザクションをコミットするか、全てをロールバックするかのいずれかです。サブトランザクションごとに異なる指示をすることはありません。
イ: 2相コミットを用いても、サブトランザクションが実行されるサイトに主サイトの指示が届かず、サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
正しい。2相コミットでは、主サイトからの指示が一部のサイトに届かない場合があり、その場合サブトランザクションがコミットすべきかロールバックすべきか分からなくなることがあります。これが2相コミットの課題の一つです。
ウ: 2相コミットを用いると、サブトランザクションがロールバックされてもトランザクションがコミットされる場合がある。
誤り。2相コミットでは、サブトランザクションがロールバックされる場合、トランザクション全体もロールバックされます。トランザクションが部分的に成功することはありません。
エ: 集中型データベースのコミット制御である1相コミットで、個々のサイトが独自に分散データベースのコミットを行った場合でも、サイト間のデータベースの一貫性は保証できる。
誤り。1相コミットでは分散データベース間の一貫性を保証できません。分散データベースでは2相コミットが必要です。
【答え】
イ: 2相コミットを用いても、サブトランザクションが実行されるサイトに主サイトの指示が届かず、サブトランザクションをコミットすべきかロールバックすべきか分からない場合がある。
出典:平成27年度 春期 データベーススペシャリスト試験 午前II 問12