平成21年度 春期 データベーススペシャリスト試験 午前Ⅱ 問11
テクノロジ/データベース更新前情報と更新後情報をログとして利用するDBMSにおいて,ログを先に書き出すWAL(Write Ahead Log)プロトコルに従うとして,処理①~⑥を正しい順番に並べたものはどれか。 ① begin transactionレコードの書出し ② データベースの実更新 ③ ログに更新前レコードの書出し ④ ログに更新後レコードの書出し ⑤ commitレコードの書出し ⑥ end transactionレコードの書出し
出典:平成21年度 春期 データベーススペシャリスト試験 午前Ⅱ 問11
- ア①→②→③→④→⑤→⑥
- イ①→③→②→④→⑥→⑤
- ウ①→③→②→⑤→④→⑥
- エ①→③→④→②→⑤→⑥
正解:エ
解説
WAL(Write Ahead Log)プロトコルでは,データベースの実更新(②)を行う前に,ログへ更新前情報(③)及び更新後情報(④)を書き出しておく必要があります。トランザクション開始(①)の後,まずログに更新前・更新後の情報を書き出し(③→④),その後で実際のデータベース更新(②)を行い,トランザクションが正常に終了したらcommitレコード(⑤)を書き出し,最後にend transactionレコード(⑥)を書き出します。
選択肢ごとの解説
- ア誤り。実更新(②)がログへの更新前・更新後情報の書出し(③,④)より先に行われており,WALプロトコル(ログを先に書き出す原則)に反している。
- イ誤り。実更新(②)が更新後情報の書出し(④)より先に行われており,更新後情報を実更新前にログへ書き出すというWALプロトコルの順序に反している。
- ウ誤り。commitレコードの書出し(⑤)が更新後情報の書出し(④)より先になっており,実更新や更新後ログの書出しが完了する前にコミットしてしまう誤った順序である。
- エ正しい。①→③→④→②→⑤→⑥の順に,開始記録の後にログへ更新前・更新後情報を書き出してから実更新を行い,その後にコミット,終了記録を書き出しており,WALプロトコルに従った正しい順序である。