平成18年春期試験午前問題 問59

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
データベースの排他制御であるロックに関する説明として,適切なものはどれか。

  • デッドロックが発生した場合には,両方のトランザクションをロールバックする。
  • ロックには,読取り時に使用する共有ロックと,変更時に用いる占有ロックがある。
  • ロックの粒度は大きいほど並列に実行されるトランザクションは多くなる。
  • ロックを用いると,デッドロックが発生することはない。
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:トランザクション処理
  • 両方のトランザクションをロールバックすると、再実行したときに再びデッドロックが発生する可能性があるので、デッドロックを解消するには両方ではなく片方のトランザクションをロールバックします。
  • 正しい。共有ロックは、データを読込むときに使うロックで、資源がこの状態の場合は他のトランザクションによる読取は可能ですが更新処理ができなくなります。占有ロックはデータを更新するときに使うロックで、資源がこの状態の場合は他のトランザクションによる読込みや更新ができなくなります。
  • 表・行などのロックをかける単位をロックの粒度といいます。粒度が小さいほど並行実行が可能になりますが、ロックの回数が多くなり制御するためのオーバヘッドが増加します。粒度が大きいほど資源の解放待ち時間が増え、並行実行の多重度が減るためデータベースの効率が低下します。
  • デッドロックは、共有資源を使用する2つ以上のプロセスが、互いに相手プロセスが必要とする資源を占有ロックしていて、互いのプロセスが相手が使用している資源の解放を待っている状態なので記述は誤りです。

Pagetop