ITパスポート 2023年 問66
問題文
トランザクション処理におけるコミットの説明として、適切なものはどれか。
選択肢
ア:あるトランザクションが共有データを更新しようとしたとき、そのデータに対する他のトランザクションからの更新を禁止すること
イ:トランザクションが正常に処理されたときに、データベースへの更新を確定させること(正解)
ウ:何らかの理由で、トランザクションが正常に処理されなかったときに、データベースをトランザクション開始前の状態にすること
エ:複数の表を、互いに関係付ける列をキーとして、一つの表にすること
🔒 解説は解答すると表示されます
トランザクション処理におけるコミットの説明【ITパスポート 解説】
正解の理由
選択肢の中で、トランザクション(一定のまとまりとして実行する一連の処理)の変更を「確定させる」動作を説明しているのは、イです。
コミット(英語: commit、意味は「確定する」)は、データベース(データを蓄える仕組み)に対する更新内容を正式に保存し、以後その変更を他から見えるようにする操作です。したがって、処理が正常に終わったときに更新を確定させる、という説明が正しいためイが正解です。
コミット(英語: commit、意味は「確定する」)は、データベース(データを蓄える仕組み)に対する更新内容を正式に保存し、以後その変更を他から見えるようにする操作です。したがって、処理が正常に終わったときに更新を確定させる、という説明が正しいためイが正解です。
解法ステップ
- 問題文で注目する語を探す:ここでは「コミット」と「トランザクション」。
- 各選択肢が「コミット=確定」かどうかで照合する。
- 「更新を確定させる」と明言している選択肢が正答になる。
- 残りはロックや取り消し、表の結合など別概念なので排除する。
短く言えば、「確定=commit」なので、確定を述べている選択肢を選びます。
選択肢別の誤答解説
-
ア: 「あるトランザクションが共有データを更新しようとしたとき、そのデータに対する他のトランザクションからの更新を禁止すること」
→ これはロック(lock:同時更新を防ぐためにデータを一時的に占有する仕組み)の説明に近いです。コミットそのものの説明ではありません。 -
イ: 「トランザクションが正常に処理されたときに、データベースへの更新を確定させること」
→ 正解。コミットは変更を永久化して他から見えるようにします。 -
ウ: 「何らかの理由で、トランザクションが正常に処理されなかったときに、データベースをトランザクション開始前の状態にすること」
→ これはロールバック(rollback:取り消し、元に戻す操作)の説明です。コミットとは逆の動作になります。 -
エ: 「複数の表を、互いに関係付ける列をキーとして、一つの表にすること」
→ これは結合(ジョイン、join:複数の表を関連付けて結合する操作)の説明です。コミットの説明ではありません。
よくある誤解
-
コミット=ロックをかける、と思う誤解
- コミットは「確定」操作です。ロックは同時実行制御のための別の仕組みです。コミット後にロックが解除されるケースもありますが、両者は別概念です。
-
コミットすれば何でも元に戻せない、という単純化の誤解
- 一般にコミット後はそのトランザクションの変更は永続化され、通常の手段では自動的に元に戻せません(復旧やバックアップからの戻しは別作業)。ただし、データベースの設定やバージョニング機能によっては後から取り消せる仕組みを持つこともあります。
補足コラム:トランザクションとACID特性
トランザクションは、複数の処理を「全部成功するか全部失敗するか」の単位で扱います。重要な性質としてACID(英語の頭文字)があります。各用語をやさしく説明します。
- Atomicity(原子性):一連の処理は「全体」が成功するか、失敗したら全部元に戻す(部分的に残らない)。
- Consistency(一貫性):トランザクション実行後もデータの整合性ルールが守られる。
- Isolation(独立性):同時に実行される他のトランザクションの影響を受けにくくする。
- Durability(永続性):コミットした変更は、システム障害があっても消えないように保存される。
例:銀行の振替処理
- Aさんから1000円引いて、Bさんに1000円足す処理は2つの更新が必要です。どちらか一方だけ成功しては困ります。トランザクションで両方をまとめ、最後にコミットして確定します。失敗したらロールバックで元に戻します。
FAQ
Q1: コミットとロールバックの違いは何ですか?
A1: コミットは「変更を確定して保存する」操作、ロールバックは「変更を取り消して開始前の状態に戻す」操作です。
A1: コミットは「変更を確定して保存する」操作、ロールバックは「変更を取り消して開始前の状態に戻す」操作です。
Q2: コミットしたら絶対に戻せませんか?
A2: 基本的にはコミット後の変更は永続化されます。戻すには別途バックアップからの復元や、アプリ側の対処が必要です。データベースによっては履歴管理やバージョン管理で戻せる仕組みがあります。
A2: 基本的にはコミット後の変更は永続化されます。戻すには別途バックアップからの復元や、アプリ側の対処が必要です。データベースによっては履歴管理やバージョン管理で戻せる仕組みがあります。
Q3: コミットは自動で行われますか?
A3: 設定によります。自動コミット(各更新ごとに自動的に確定する設定)と、明示的にコミットを呼ぶ方法があります。業務上は複数の処理をまとめて手動でコミットすることが多いです。
A3: 設定によります。自動コミット(各更新ごとに自動的に確定する設定)と、明示的にコミットを呼ぶ方法があります。業務上は複数の処理をまとめて手動でコミットすることが多いです。
関連キーワード: トランザクション、コミット、ロールバック、データベース、ロック、ACID、原子性、永続性、独立性、一貫性、同時実行制御、結合、ジョイン、トランザクション管理

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

