ホーム > データベーススペシャリスト試験 > 2012年
データベーススペシャリスト試験 2012年 午前2 問13
デッドロックが発生する可能性のある排他制御の方式はどれか。
ア:2相ロックプロトコルに従ってロックする方式(正解)
イ:時刻印を用いて, トランザクションの優先順位を決める方式
ウ:全てのトランザクションにおいて, ロック対象のデータは一定の順序でロックを行い, 全てのロックが完了するまで, アンロックを行わない方式
エ:トランザクション開始時に一括してロックする方式
解説
デッドロックが発生する可能性のある排他制御の方式【午前2 解説】
要点まとめ
- 結論:デッドロックが発生する可能性があるのは「2相ロックプロトコルに従ってロックする方式」です。
- 根拠:2相ロックはロック獲得と解放の段階が分かれているため、相互にロック待ち状態が発生しやすいです。
- 差がつくポイント:時刻印方式や一括ロック方式はデッドロック回避策を含み、ロック順序を固定する方式はデッドロックを防止します。
正解の理由
2相ロックプロトコルは「拡張フェーズ」でロックを獲得し、「縮小フェーズ」でロックを解放します。この段階的なロック操作により、複数トランザクションが互いに相手のロック解除を待つ状態(デッドロック)が発生する可能性があります。一方、時刻印方式は優先順位で待ちを回避し、ロック順序固定方式や一括ロック方式はデッドロックを起こさない設計です。したがって、デッドロックが起こりうるのは「ア」の2相ロックプロトコル方式です。
よくある誤解
2相ロックは安全な排他制御方式と誤解されがちですが、実際にはデッドロックのリスクが存在します。全てのロックを一括で取得すればデッドロックは起きないと考えるのも誤りです。
解法ステップ
- 各選択肢の排他制御方式の特徴を理解する。
- デッドロックの発生条件(相互待ち、循環待ち)を確認する。
- 2相ロックプロトコルは段階的にロックを獲得・解放するため、相互待ちが起こりやすいと判断。
- 時刻印方式は優先順位で待ちを回避し、ロック順序固定方式は循環待ちを防止。
- 一括ロック方式は開始時に全ロックを取得し、待ち状態を作らないためデッドロックは発生しにくい。
- 以上より、デッドロックが発生する可能性があるのは「ア」と結論づける。
選択肢別の誤答解説
- ア: 2相ロックプロトコルはロックの獲得と解放が分かれており、相互にロック待ちが発生しやすくデッドロックが起こる可能性がある。
- イ: 時刻印方式はトランザクションの優先順位で待ちを回避し、デッドロックを防止するため誤り。
- ウ: ロック対象のデータを一定の順序でロックし、全ロック完了までアンロックしない方式は循環待ちを防ぎデッドロックを起こさない。
- エ: トランザクション開始時に一括でロックを取得するため、途中で待ち状態が発生せずデッドロックは起きにくい。
補足コラム
2相ロックプロトコルはデータベースの整合性を保つための基本的な排他制御方式ですが、デッドロック検出や回避のためにタイムアウトやロールバックなどの追加処理が必要です。時刻印方式はデッドロックを回避するための代表的な手法で、トランザクションの開始時刻や優先順位を利用して待ちを制御します。
FAQ
Q: 2相ロックプロトコルでデッドロックが起きた場合、どう対処すればよいですか?
A: デッドロック検出アルゴリズムで循環待ちを検出し、どれか一つのトランザクションをロールバックして解消します。
A: デッドロック検出アルゴリズムで循環待ちを検出し、どれか一つのトランザクションをロールバックして解消します。
Q: 一括ロック方式はなぜデッドロックが起きにくいのですか?
A: トランザクション開始時に全ての必要なロックを取得するため、途中で他のトランザクションとロック待ち状態にならず、デッドロックが発生しにくいです。
A: トランザクション開始時に全ての必要なロックを取得するため、途中で他のトランザクションとロック待ち状態にならず、デッドロックが発生しにくいです。
関連キーワード: デッドロック, 2相ロックプロトコル, 排他制御, 時刻印方式, トランザクション管理, ロック順序, データベース制御