Zenn
Agent Grow Tech Notes
💽

【DB】応用情報:平成28年秋期(午前:問30)トランザクションは色で覚える!

2025/03/20に公開

前回に続き

データベースに関する出題を『色で覚える』方法を紹介します。

前回は『3層スキーマ』でしたが、今回は『トランザクション』です。
古い年度の過去問ではありますが、比較的よく見かける問題ではないかと思います。

そして、今回も開発/インフラに関わらず押さえておくべき知識です!

大事なポイント

これも前回同様『イメージで覚える』ことです!
今回は特に、複数の表を上手く紐づけるために、より視覚的な判断材料が必要となります。
そこで、色分けが良い方法ということになります。

問30:トランザクション

問題文はこちら。
見た瞬間 「あ~、もう無理!この問題は捨てよう。」
と思う方もおられるのでは?
※出典:平成28年度 秋期 応用情報技術者試験 午後 問題冊子

では、この問題を色分けしたらどうでしょうか?

色ごとに解説

前回同様、青/赤/紫の3色にしました。
ただ、このままでは何のことか分からないと思いますので、色ごとに解説します。

青:そもそも考慮が必要か?

ポイントは『そもそもトランザクションの考慮が必要か否か?』です。
一番上の表は、6つのトランザクション処理がそれぞれ何をやっているかを示しています。
※ここでは『回数』は無視してください。

  • T1/T2/T5/T6:ReadとWrite → つまり『読み込み』と『書き込み
  • T3/T4:Readのみ → つまり『読み込みだけ

この問題で問われている『ロールバック』と『ロールフォワード』は、『書き込み』が発生する場合に考慮が必要となります。

つまり、この時点で『読み込みのみである 『T3/T4』は除外となります。
そして、選択肢は『T3/T4』が含まれていない 『ア』『ウ』に絞られます。

あとは、T1/T2/T5/T6の4つで考えていきます。

赤:ロールフォワード

ここでもそもそもな話が出てきます。
下記のいずれも、チェックポイントより後且つ障害発生直前までに発生したトランザクションが対象です。

  • ロールバック:コミットしていないトランザクションを戻す(取り消す
  • ロールフォワード:コミットした内容を復旧する(ログを使って書き込まれた状態を復元する)

赤はひとまず『ロールフォワード』の方にフォーカスしました。
それを踏まえて、適切か判断します。

  • T1:そもそもチェックポイント後にトランザクションは無い → ×
  • T2:チェックポイント後~障害発生前にコミットしている → 
  • T5:T2と同じ → 
  • T6:チェックポイント後にトランザクションがあるが、コミットしていない → ×

つまり、チェックポイント~障害発生の間に『●』がついている『T2/T5』が『ロールフォワード』となるので、選択肢はこの時点で 『ア』『イ』に絞られます。

青で判断した結果と合わせると、もう正解が『ア』であることが分かってしまいましたが、続けて『ロールバック』も見てみましょう。

紫:ロールバック

一言で表すと『赤と逆』です。
つまり、チェックポイント~障害発生の間にトランザクションが発生しているにも関わらず、コミットしていない場合です。

感覚的には「せっかく更新したけど、コミットしていないから元に戻すしかないよね」です。

中央の図だけを見ると『T3/T4/T6』に思えるところですが『T3/T4』は青で解説の通り『そもそも書き込みではない』ので、『書き込み』が発生している『T6』だけになります。

つまり、選択肢は 『ア』『ウ』に絞られますが、既に青と赤の組合せで絞り終えている、という感じです。

結論

色を使ってポイントを押さえると、見た目より簡単な問題に思えてきませんか?

  • Read(読み込み)だけの場合は考慮不要
  • チェックポイント~障害発生の間でコミットしたら『ロールフォワード』
  • チェックポイント~障害発生の間にコミットしていなければ『ロールバック』

さいごに

そういうわけで、平成28年秋期の午前:データベースを使った記事は終了です。

とはいえ、YouTubeで使った画像の使い回しはまだやりたいと思います(笑)
次回はおそらく、令和6年秋期の午前:ストラテジ系計算問題を使った記事になります!
https://youtu.be/7TsvIgu7pNY?feature=shared

では、今回は以上です。
ここまでお付き合い頂き、ありがとうございましたm(_ _)m

Agent Grow Tech Notes
Agent Grow Tech Notes

Discussion

ログインするとコメントできます