分野 T|テクノロジ

トランザクション処理(排他制御・コミット・ロールバック・デッドロック)

今の制度の過去問(3回分)では、トランザクション処理の適切な記述を選ぶ形が、合わせて2問出ています。

シラバス案 Ver.0.1(2026年8月31日公表)の『4-17-4 トランザクション処理』

最終更新

よく出る形

  • トランザクション処理の記述のうち、適切な物を選ぶ(3回分で2問)
  • 問われるとしたら:事例で、更新が途中で失敗したときの対応を選ぶ形
  • 問われるとしたら:コミット(確定)、ロールバック(取消し)の a〜c の組合せの形
  • 問われるとしたら:デッドロック(待ち合い)が起きた状態の説明を選ぶ形

覚えること

  • トランザクション:データベースへの一連の更新処理を、ひとまとまりにした単位
  • コミット:一連の処理が全て成功したとき、変更結果を確定すること
  • ロールバック:途中で失敗したとき、処理前の状態に戻すこと
  • 確定後の変更:コミットで確定した変更は、ロールバックでは戻せない
  • 同時実行制御(排他制御):複数のトランザクションが同じデータを同時に更新しようとするとき、矛盾が起きないようにすること
  • ロック:更新中のデータを、ほかのトランザクションが更新できないようにすること
  • デッドロック:複数のトランザクションが互いに相手のロックの解除を待ち続け、どれも進めなくなる状態
  • ログ:データベースの更新履歴を記録したファイル

ひっかけ

  • コミットは確定、ロールバックは取消し。取りちがえない
  • 失敗時に戻すのはロールバック。排他制御は同時更新の矛盾を防ぐ
  • デッドロックは、更新の矛盾ではなく、待ち合いで進めない状態

想定問題

4問(四肢択一)。選ぶと、その場で正解と解説が開きます。

想定問題 1四肢択一

このときのデータベースの対応として、最も適切なものはどれか。

A 社の通販システムでは、注文を受け付けるとき、在庫数を減らす更新と、注文記録を追加する更新を、一連の処理として行う。在庫数を減らす更新は終わったが、注文記録の追加でエラーが起き、一連の処理が最後まで終わらなかった。

正解:ウ ロールバックして、在庫数を減らした更新も取り消し、開始前の状態に戻す。

ポイント

更新が途中で失敗したときの対応を、コミット、ロールバック、排他制御、ログの働きで区別する問題です。

考え方と解き方

一連の更新は、全て成功して確定するか、失敗したら全て取り消すかのどちらかで終えます。途中までの更新だけを確定すると、在庫数と注文記録が食いちがう、と考えると誤りが分かります。

  1. 在庫数を減らす更新と注文記録の追加は、1つのトランザクションです。注文記録の追加が失敗したので、一連の処理は成功していません。
  2. 途中で失敗したときは、ロールバックで、処理を始める前の状態に戻します。
  3. したがって、最も適切なのは ウ です。

ほかの選択肢

  • ア コミットは、全て成功したときに変更結果を確定する処理です。一部の更新だけを確定すると、在庫数と注文記録が食いちがったままになります。
  • イ 排他制御は、同時の更新による矛盾を防ぐ仕組みで、失敗した更新を元に戻す働きはありません。
  • エ ログは更新履歴を記録するファイルで、削除しても、行われた更新は取り消されません。

覚えておくこと

  • ロールバック:途中で失敗したとき、処理前の状態に戻すこと
  • コミット:一連の処理が全て成功したとき、変更結果を確定すること

(テーマ・覚えること)

想定問題 2四肢択一

適切なものだけを全て挙げたものはどれか。

A 社の銀行システムでは、振込の処理(送金元の残高を減らす更新と、送金先の残高を増やす更新)を、1つのトランザクションとして行っている。この処理の扱いについて、a〜c の記述がある。
  • a 2つの更新がどちらも成功した時点でコミットすると、その変更結果がデータベースに確定される。
  • b 送金元の更新と送金先の更新は、どちらか一方だけが確定されることがないよう、ひとまとまりとして扱われる。
  • c コミットで確定した振込の変更に誤りが見つかったときは、ロールバックを行えば、確定前の状態に戻せる。

正解:ア a、b

ポイント

コミット、トランザクションのまとまり、ロールバックの働きを、a〜c で判定する問題です。

考え方と解き方

確定したあとでも元に戻せると考えて、c を適切とするのが、典型的な間違え方です。

  1. a は適切です。全ての更新が成功したときにコミットすると、変更結果が確定します。
  2. b は適切です。トランザクションは一連の更新をひとまとまりにした単位で、全て成功したときに確定し、途中で失敗したときは処理前に戻します。
  3. c は不適切です。コミットで確定した変更は、ロールバックでは戻せません。
  4. したがって、適切なのは a、b で、ア です。

ほかの選択肢

  • イ c も適切としていますが、確定した変更はロールバックでは戻せないので、c は不適切です。
  • ウ a が適切なのに入っておらず、不適切な c が入っています。
  • エ a、b が適切なのに入っておらず、不適切な c だけになっています。

覚えておくこと

  • コミット:一連の処理が全て成功したとき、変更結果を確定すること
  • トランザクション:データベースへの一連の更新処理を、ひとまとまりにした単位
  • 確定後の変更:コミットで確定した変更は、ロールバックでは戻せない

(テーマ・覚えること)

想定問題 3四肢択一

この食いちがいを防ぐ対応として、最も適切なものはどれか。

A 社の在庫システムで、担当者 P と担当者 Q が、同じ商品の在庫数を同時に更新した。P は在庫数を 10 個減らし、Q は 5 個減らしたが、結果は 5 個だけ減った状態になり、P の更新が失われた。

正解:エ 一方が更新している間はロックをかけて、もう一方の同時の更新を待たせる。

ポイント

同じデータの同時の更新で起きる食いちがいを、何で防ぐかを問う問題です。

考え方と解き方

同時の更新でも、あとで結果を確かめれば済むと考えて、コミットを保留する方法(ウ)や、後から終わった方を残す方法(イ)を選びがちです。更新が重ならないよう、順番に行わせる仕組みが要ります。

  1. 事例は、複数の更新が同じデータを同時に更新して、一方の更新が失われています。
  2. このようなときは、同時実行制御(排他制御)で、ロックにより、更新中のデータをほかの更新が変更できないようにして、矛盾を防ぎます。
  3. したがって、最も適切なのは エ です。

ほかの選択肢

  • ア バックアップで戻せるのは、食いちがいが起きたあとです。同時の更新で食いちがいが起きること自体は防げません。
  • イ 同時に進めると、更新が重なって食いちがいが起きます。あとから終わった方だけを残しても、先の更新は失われます。
  • ウ 保留しても、同じデータを同時に更新する問題は残ります。更新を順番に行う仕組みが要ります。

覚えておくこと

  • 同時実行制御(排他制御):複数のトランザクションが同じデータを同時に更新しようとするとき、矛盾が起きないようにすること
  • ロック:更新中のデータを、ほかのトランザクションが更新できないようにすること

(テーマ・覚えること)

想定問題 4四肢択一

この状態の説明として、最も適切なものはどれか。

A 社の在庫システムで、処理 P はデータ X を更新中で、データ Y を使う更新の終了を待っている。一方、処理 Q はデータ Y を更新中で、データ X を使う更新の終了を待っている。どちらの処理も先に進まない。

正解:イ デッドロックが起きていて、2つの処理が互いに相手の終了を待ち続け、どちらも進めなくなっている。

ポイント

互いに待ち合って進めなくなった状態が、デッドロックであることを問う問題です。

考え方と解き方

処理が失敗して元に戻ったわけではなく、待ち合いで止まっているだけです。同時の更新で矛盾が起きた状態とも別になります。

  1. 処理 P は Y を、処理 Q は X を待ち、互いに相手の更新の終了を待ち続けています。
  2. このように、複数の処理が互いに相手のロックの解除を待ち、どれも進めなくなる状態が、デッドロックです。
  3. したがって、最も適切なのは イ です。

ほかの選択肢

  • ア 排他制御が働いていれば、同時の更新は起きません。この事例は、同時の更新による矛盾ではなく、待ち合いで止まっています。
  • ウ 事例では、処理は失敗しておらず、待ち続けています。ロールバックされて、前の状態に戻っているわけではありません。
  • エ 電源の停止は、事例に書かれていません。事例では、処理は動いたまま、互いに待ち合っています。

覚えておくこと

  • デッドロック:複数のトランザクションが互いに相手のロックの解除を待ち続け、どれも進めなくなる状態
  • 同時実行制御(排他制御):複数のトランザクションが同じデータを同時に更新しようとするとき、矛盾が起きないようにすること

(テーマ・覚えること)

1問ずつの画面で解く(4問)

このテーマの過去問

過去問を解く(2問)
前のテーマ次のテーマ:機械学習(教師あり学習・教師なし学習・強化学習・過学習)

同じ分野のテーマ(テクノロジ)