平成21年度 春期 午前Ⅱ 問11
トランザクション処理
WALに関する問題
更新前情報と更新後情報をログとして利用する DBMS において,ログを先に書き出す WAL(Write Ahead Log)プロトコルに従うとして,処理①~⑥を正しい順番に並べたものはどれか。
① begin transaction レコードの書出し
② データベースの実更新
③ ログに更新前レコードの書出し
④ ログに更新後レコードの書出し
⑤ commit レコードの書出し
⑥ end transaction レコードの書出し
- ア①→②→③→④→⑤→⑥
- イ①→③→②→④→⑥→⑤
- ウ①→③→②→⑤→④→⑥
- エ①→③→④→②→⑤→⑥
答えと解説を見る
✓ これが正解エ①→③→④→②→⑤→⑥
解説
ログを先に書き、そのあとで実更新、最後に commit と end を書きます。
WAL プロトコルは、データベースを実際に更新する前に、その更新のログを書き出しておく決まりです。こうしておけば、実更新の途中で障害が起きても、ログを使って取り消したりやり直したりできます。処理の順は、まず begin transaction レコード①を書き、更新前レコード③と更新後レコード④をログに書き出してから、データベースの実更新②を行います。そのあとで commit レコード⑤を書き、最後に end transaction レコード⑥を書きます。並びは①→③→④→②→⑤→⑥です。並べ替えの問では、②より前にログの二つ、②より後に commit、最後に end、という骨組みを先に当てはめると選びやすくなります。
ほかの選択肢はなぜ違うのか
- ア①→②→③→④→⑤→⑥:データベースの実更新②を、ログへの書出し③④より先に行っています。ログが残る前に実更新した状態で障害が起きると、元に戻すための値が手元にないので、ログを先に書く決まりに反します。
- イ①→③→②→④→⑥→⑤:更新後レコード④の書出しが実更新②より後に回っているうえ、end transaction ⑥を commit ⑤より先に書いています。トランザクションを終える記録がコミットの前に来る並びは成り立ちません。
- ウ①→③→②→⑤→④→⑥:commit レコード⑤を更新後レコード④より先に書いています。コミット済みとした更新を障害後にやり直すには、その時点で更新後の値がログに残っている必要があるので、この順では回復できない場合が生じます。
この問題の用語
- ログいつ誰が何をしたかを、機器やソフトウェアが自動で残していく記録です。あとから出来事をたどれるので、事故の調査や不正の発見に使われます。
- DBMSデータベースを管理するソフト。複数の処理が同じデータを同時に更新しても矛盾しないよう、排他制御などを行います。
- プロトコル通信するときの、決まりごとや手順のまとまりのことをいいます。送る側と受ける側が同じものに従うことで、やり取りが成り立ちます。
- データベースたくさんのデータを決まった形で貯め、探したり書き換えたりできるようにした仕組み。多くの人が同時に使うことを前提にしています。
出典:平成21年度 春期 データベーススペシャリスト試験 午前Ⅱ 問11
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問17:デッドロックに関する問題(DBMS)
- 令和6年度 秋期 午前Ⅱ 問14:多版同時実行制御に関する問題(プロトコル)
- 令和5年度 秋期 午前Ⅱ 問19:DRDoSに関する問題(ログ)
- 令和5年度 秋期 午前Ⅱ 問2(プロトコル)
- 令和2年度 10月 午前Ⅱ 問23:フェールオーバ処理の順序(ログ)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)