トランザクション処理の用語、説明の中身から見分ける
ITパスポート試験 令和6年度 問74 / データベース › トランザクション処理
過去問にチャレンジ
トランザクション処理に関する記述のうち,適切なものはどれか。
- ア
コミットとは,トランザクションが正常に処理されなかったときに,データベースをトランザクション開始前の状態に戻すことである。
- イ
排他制御とは,トランザクションが正常に処理されたときに,データベースの内容を確定させることである。
- ウ
ロールバックとは,複数のトランザクションが同時に同一データを更新しようとしたときに,データの矛盾が起きないようにすることである。
- エ
ログとは,データベースの更新履歴を記録したファイルのことである。
会話形式の解説
講師今回は、トランザクション処理の基本用語であるコミット、ロールバック、排他制御、ログの意味を区別できるかがポイントです。選択肢の用語名ではなく、説明の中身が本当はどの用語のことかに注目してください。
受験者私は、アの「正常に処理されなかったときに開始前の状態に戻す」という説明を、コミットのことだと考えかけました。カタカナ語どうしで区別があいまいです。
講師そこは混同しやすいところです。開始前の状態に戻す処理はロールバックです。コミットは、正常に終わったトランザクションの更新結果を確定させる処理です。
受験者そうすると、イの「正常に処理されたときにデータベースの内容を確定させる」は、排他制御ではなくコミットの説明ということですね。
講師そのとおりです。排他制御は、同時に行われる更新を制限して、データの不整合、つまり矛盾が起きるのを防ぐ仕組みです。
受験者ウの「複数のトランザクションが同時に同じデータを更新しようとしたときに矛盾が起きないようにする」は、今聞いた排他制御の説明そのものに見えます。
講師はい。ウはそれをロールバックとしているので誤りです。ロールバックは、処理に失敗したときに更新を取り消して、トランザクション開始前の状態に戻す処理です。ア〜ウは、どれも別の用語の説明と組み合わされています。
受験者残るエの「ログはデータベースの更新履歴を記録したファイル」は、用語と説明が合っているように思います。
講師そうです。エが正解です。障害が起きたときは、このログを使ってデータベースの内容を復旧できます。
受験者用語名だけで判断せず、「この説明は本当はどの用語のものか」と考えれば、入れ替えに気づけるということですね。
講師そのとおりです。このように用語と説明を入れ替えた選択肢が作られることがあるので、その考え方は役に立ちます。あわせて、関連用語のロールフォワードも押さえておきましょう。ログを使って失われた更新をやり直し、障害が起きる前の状態まで進める操作です。
受験者ロールバックは「戻す」、ロールフォワードは「進める」と、向きで区別して覚えます。
講師はい、向きで区別しておくと、二つを取り違えにくくなります。
まとめ
この問題は、トランザクション処理の基本用語であるコミット、ロールバック、排他制御、ログの意味を区別できるかを問うものです。ア〜ウは、それぞれ別の用語の説明と組み合わされていて、アはロールバック、イはコミット、ウは排他制御の説明です。用語と説明が正しく対応しているのはエで、ログはデータベースの更新履歴を記録したファイルであり、障害時の復旧に使われます。用語名だけでなく説明の中身から本当はどの用語かを考えると、入れ替えに気づけます。関連用語のロールフォワードは、ログを使って更新をやり直し障害前の状態まで進める操作で、戻すロールバックとは向きが逆です。
解答・解説
正解はエです
この問題のテーマ
トランザクション処理で使う基本用語(コミット、ロールバック、排他制御、ログ)の意味を、正しく区別できているかを問う問題です。
解き方の考え方
ア〜ウの3つは、どれも別の用語の説明が書かれていて、用語と説明の組み合わせだけがずれています。各記述を読んで「これは本当はどの用語の説明か」を考えると、組み合わせの誤りがすぐに分かります。アの内容はロールバック、イの内容はコミット、ウの内容は排他制御のものです。残ったエだけが、用語と説明が正しく対応しています。
選択肢ごとの解説
- ×ア コミットとは,トランザクションが正常に処理されなかったときに,データベースをトランザクション開始前の状態に戻すことである。正常に処理されなかったときに開始前の状態に戻すという説明は、コミットではなくロールバックのものです。コミットは、正常に終わったトランザクションの更新結果を確定させる処理です。
- ×イ 排他制御とは,トランザクションが正常に処理されたときに,データベースの内容を確定させることである。正常に処理されたときにデータベースの内容を確定させるという説明は、排他制御ではなくコミットのものです。排他制御は、同時に行われる更新を制限して、データの不整合を防ぐ仕組みです。
- ×ウ ロールバックとは,複数のトランザクションが同時に同一データを更新しようとしたときに,データの矛盾が起きないようにすることである。複数のトランザクションが同じデータを同時に更新するときに矛盾を防ぐという説明は、ロールバックではなく排他制御のものです。ロールバックは、処理に失敗したときに更新を取り消し、開始前の状態に戻す処理です。
- ○エ ログとは,データベースの更新履歴を記録したファイルのことである。ログをデータベースの更新履歴を記録したファイルとする説明は正しい内容です。障害が起きたときは、このログを使ってデータベースの内容を復旧できます。
補足
この問題のように、正しい説明を別の用語に入れ替えた選択肢はよく出題されます。用語名だけで判断せず、説明の中身から「本当はどの用語か」を考える習慣をつけると、引っかけに強くなります。関連用語のロールフォワードは、ログを使って失われた更新をやり直し、障害が起きる前の状態まで進める操作です。戻すロールバックと混同しないように注意しましょう。
POINT
- コミットは、正常に終わったトランザクションの更新結果を確定させる処理です。
- ロールバックは、処理に失敗したときに更新を取り消し、トランザクション開始前の状態に戻す処理です。
- 排他制御は、複数のトランザクションが同時に更新することで起きるデータの矛盾を防ぐ仕組みです。
- ログはデータベースの更新履歴を記録したファイルで、障害が起きたときの復旧に使われます。
