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