データベーススペシャリスト試験 2019年 午前202


次のチェックポイントの仕様に従ってトランザクション処理を行うDBMSにおいて, チェックポイントの発生頻度は1時間当たり何回か。ここで, トランザクションは毎秒20件発生し, 1トランザクションごとに消費されるデータベースバッファ領域のデータ量及びログファイルに書き出すログ長はどちらも10kバイトとする。データベースバッファ領域の容量は480Mバイトとし, 一つのログファイルのサイズは240Mバイトとする。1Mバイト=103kバイトとする。開始時点では, データベースバッファ領域, ログファイルともに初期化状態であるとする。DBMSは, ログファイルを二つもち, 一方を使い切ったら他方に切り替え, 使い切った一方をアーカイブして初期化する。ログファイルへの書込み処理はWALプロトコルに従う。
〔チェックポイントの仕様〕  1.チェックポイントが発生する条件   A.データベースバッファ領域に空きがなくなったとき, 又は   B.ログファイルが切り替わるとき  2.チェックポイント終了時のデータベースバッファの状態   データベースバッファ領域は, データベースファイルへの反映後, 初期化される。
1.5
2
3(正解)
6

解説

チェックポイントの発生頻度は1時間当たり何回か【午前2 解説】

要点まとめ

  • 結論:チェックポイントは1時間に3回発生する。
  • 根拠:バッファ容量とログファイル容量から、チェックポイント発生条件を計算し、より頻度の高い条件で決まるため。
  • 差がつくポイント:バッファ容量とログファイル容量の単位換算と、ログファイルの切り替え条件を正確に理解すること。

正解の理由

チェックポイントは「バッファ領域が満杯になる時」と「ログファイルが切り替わる時」のどちらかで発生します。
  • バッファ領域は480Mバイト(=480×10³kバイト)で、1トランザクションあたり10kバイト消費。
  • 1秒あたり20トランザクション発生なので、バッファが満杯になるまでの時間は
    480×10320×10=2400=40\frac{480 \times 10^3}{20 \times 10} = 2400 \text{秒} = 40 \text{分}
  • ログファイルは240Mバイト×2つで合計480Mバイト(=480×10³kバイト)、1トランザクションあたり10kバイトのログを書き込むため、ログファイルが切り替わるまでの時間も同じく40分。
    よって、チェックポイントは40分ごとに発生し、1時間(60分)あたりは
    6040=1.5\frac{60}{40} = 1.5 \text{回}
    しかし、ログファイルは2つを交互に使い切るため、切り替えは1つのログファイルが満杯になるたびに発生し、1つのログファイルの容量240Mバイトで計算すると、切り替えは20分ごとに起こります。
  • 1トランザクションあたり10kバイト、1秒20トランザクションなので1秒あたり200kバイト。
  • 240Mバイト = 240,000kバイトなので、切り替え時間は
    240,000200=1200=20\frac{240,000}{200} = 1200 \text{秒} = 20 \text{分}
    つまり、ログファイルの切り替えは20分ごとに発生し、バッファ満杯は40分ごと。
    チェックポイントはどちらか早い方で発生するため、20分ごとに発生し、1時間あたりは
    6020=3\frac{60}{20} = 3 \text{回}
    よって正解はの3回です。

よくある誤解

バッファ容量とログファイル容量の単位を混同し、ログ切り替え時間を誤ることが多いです。
また、ログファイルが2つあることを考慮せず、切り替え頻度を誤解する場合があります。

解法ステップ

  1. 1トランザクションあたりのバッファ消費量とログ書込み量を確認する(10kバイト)。
  2. バッファ容量(480Mバイト)をkバイトに換算し、満杯になるまでのトランザクション数を計算。
  3. トランザクション発生速度(20件/秒)からバッファ満杯までの時間を算出。
  4. ログファイル1つの容量(240Mバイト)をkバイトに換算し、ログ切り替えまでのトランザクション数を計算。
  5. トランザクション発生速度からログ切り替えまでの時間を算出。
  6. チェックポイントは「バッファ満杯」か「ログ切り替え」の早い方で発生するため、短い時間を採用。
  7. 1時間(60分)をその時間で割り、発生回数を求める。

選択肢別の誤答解説

  • ア(1.5回):バッファ満杯になる時間のみ考慮し、ログファイル切り替えの頻度を見落としている。
  • イ(2回):ログファイル切り替えの計算を誤り、切り替え時間を長く見積もっている可能性がある。
  • ウ(3回):バッファ満杯とログ切り替えの両方を正しく計算し、より頻度の高いログ切り替えに基づく。
  • エ(6回):ログ切り替え時間を短く見積もりすぎているか、トランザクション発生速度を誤っている。

補足コラム

WAL(Write-Ahead Logging)プロトコルでは、ログファイルへの書き込みが先行し、障害時の復旧を容易にします。
ログファイルが2つあるダブルログ方式は、片方を使い切ったら切り替え、使い終わったログをアーカイブして初期化することで、連続的なログ管理を実現しています。
チェックポイントはデータベースの整合性維持と復旧時間短縮に重要な役割を果たします。

FAQ

Q: チェックポイントはなぜバッファ満杯とログ切り替えの両方で発生するのですか?
A: バッファが満杯になると新たなデータを保持できず、ログ切り替え時はログファイルの管理上必要なため、両方がチェックポイント発生条件です。
Q: 1Mバイトを10310^3kバイトとする理由は?
A: 問題文の指定に従い、1Mバイト=1000kバイトとして計算するため、単位換算ミスを防ぎます。

関連キーワード: チェックポイント, トランザクション処理, データベースバッファ, ログファイル切り替え, WALプロトコル
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ