データベースの排他制御であるロックに関する説明として、適切なものはどれか。
ア |
デッドロックが発生した場合には、両方のトランザクションをロールバックする。 |
イ |
ロックには、読取り時に使用する共有ロックと、変更時に用いる占有ロックがある。 |
ウ |
ロックの粒度は大きいほど並列に実行されるトランザクションは多くなる。 |
エ |
ロックを用いると、デッドロックが発生することはない。 |
答え イ
【解説】
ア |
デッドロックが発生した場合には、どちらか一方のトランザクションを中止しロールバックを行います。 |
イ |
ロックには読取り用の共有ロックと更新用の占有ロックがあります。
|
現在のロック状態 |
未 |
共有 |
占有 |
ロック要求 |
共有 |
可 |
可 |
不可 |
占有 |
可 |
不可 |
不可 |
|
ウ |
ロックの粒度とはロックするデータの大きさであり、大きいとロックのための処理(オーバヘッド)は小さいが、並列に実行できるトランザクションは少なくなる。 |
エ |
ロックを行うのでデッドロックが発生する。なお、ロックを行わないとデータの不整合が発生してしまう。 |
【キーワード】
・ロック
・デッドロック
【キーワードの解説】
- ロック(lock)
複数の処理(トランザクション)が動作している環境で、複数の処理が同じデータ(資源)に同時にデータの書換えを行うと、データに不整合が生じるので、書き換えを行う前に他の処理からのアクセスを制限する処理をロックといいます。(排他処理)
- デッドロック(deadlock)
複数の処理(トランザクション)で、互いに相手が占有している資源(データ)を占有(ロック)しようとして、処理が停止することです。
処理がA、B、資源がX、Yのときに、処理Aが資源Xを占有し、処理Bが資源Yを占有している状態で、処理Aが資源Yの占有待ちになり、処理Bが資源Xの占有待ちになると、処理AとBはデッドロック状態になります。
もっと、「デッドロック」について調べてみよう。
戻る
一覧へ
次へ
|