基本情報技術者 2015年 秋期 午前(科目A) 問29
問題文
ロックの両立性に関する記述のうち、適切なものはどれか。
選択肢
ア:トランザクションが共有ロックを獲得している資源に対して、トランザクションは共有ロックと専有ロックのどちらも獲得することができる。
イ:トランザクションが共有ロックを獲得している資源に対して、トランザクションは共有ロックを獲得することはできるが、専有ロックを獲得することはできない。(正解)
ウ:トランザクションが専有ロックを獲得している資源に対して、トランザクションは専有ロックと共有ロックのどちらも獲得することができる。
エ:トランザクションが専有ロックを獲得している資源に対して、トランザクションは専有ロックを獲得することはできるが、共有ロックを獲得することはできない。
ロックの両立性に関する記述のうち、適切なものはどれか。【午前2 解説】
要点まとめ
- 結論: 共有ロックは複数トランザクションで同時に取得可能で読み取りの並行性を許すが、共有と専有は両立しない。
- 根拠: 共有(S)は読み取りの互換性を保ち、専有(X)は書き込みのため完全排他を要求して互換性を持たない。
- 差がつくポイント: ロック両立性表(S/S=可, S/X=不可, X/S=不可, X/X=不可)を即座に思い浮かべられるかが鍵。
正解の理由
正解は イ です。
共有ロック(S)は複数トランザクションが同時に取得しても問題ない(読み取りは並行可能)ため、T2は共有ロックを取得できる。一方、専有ロック(X)は資源に対する完全排他を要求するので、既に共有ロックが存在する場合は専有ロックを取得できない。したがって「共有は可だが専有は不可」という イ が正しい。
共有ロック(S)は複数トランザクションが同時に取得しても問題ない(読み取りは並行可能)ため、T2は共有ロックを取得できる。一方、専有ロック(X)は資源に対する完全排他を要求するので、既に共有ロックが存在する場合は専有ロックを取得できない。したがって「共有は可だが専有は不可」という イ が正しい。
よくある誤解
- 「共有ロックがあると他は何も取得できない」と考える誤り:共有ロック同士は両立するため読み取りは並行可能です。
- 「専有ロックがあると専有ロックは可能だ」と勘違いする誤り:専有ロックが既にある場合、別トランザクションは専有も共有も取得できません。
- 意図ロック(IS/IX)やロックの昇格・ダウングレードを混同して、単純なS/Xの互換性を見誤ることがある点。
解法ステップ
- ロックの種類を確認する(S=共有、X=専有)。
- 両立性表を思い出す:SはSと両立、SとXは両立しない、Xは誰とも両立しない。
- 各選択肢をこの表に当てはめて検証する(既存ロックが何か→試行ロックが何か)。
- 表と照合して一貫する選択肢を選ぶ。
選択肢別の誤答解説
- ア: 「T2は共有ロックと専有ロックのどちらも獲得できる」→誤り。共有ロックが既にある場合、専有ロックは取得不可。
- イ: 「T2は共有ロックを獲得できるが、専有ロックは獲得できない」→正解。共有同士は可、専有は不可に合致。
- ウ: 「T1が専有ロックを持つ場合、T2は専有も共有も獲得できる」→誤り。専有ロックが存在する時点で他は何も取得できない。
- エ: 「T1が専有ロックを持つ場合、T2は専有は獲得できるが共有はできない」→誤り。専有ロックがあると、他は専有も共有も取得不可。
補足コラム
- 両立性行列の例(簡潔版)
- 実際のDBでは「意図ロック(IS, IX)」や「階層ロック(テーブル/行)」、さらに「ロックの昇格(upgrade)」や「悲観的/楽観的同時実行制御」などが絡み、単純なS/Xだけでない運用上の考慮が必要です。
- 例えば複数の読み取りが先に入り、その後1つが書き込み(X)を要求すると、既存のSが解放されるまでXは待機します。これがデッドロックや待ち行列発生の原因になります。
FAQ
Q1: 共有ロックから専有ロックへ「昇格」できるのか?
A1: できるが、他のトランザクションが共有ロックを持っていると昇格は待たされ、競合が発生するとデッドロックの原因になる場合があります。
A1: できるが、他のトランザクションが共有ロックを持っていると昇格は待たされ、競合が発生するとデッドロックの原因になる場合があります。
Q2: なぜ共有と専有が両立しないのか?
A2: 書き込み(専有)はデータの一貫性を保つために完全な排他が必要で、読み取りが同時に行われると更新の整合性が崩れる可能性があるからです。
A2: 書き込み(専有)はデータの一貫性を保つために完全な排他が必要で、読み取りが同時に行われると更新の整合性が崩れる可能性があるからです。
Q3: 例外的に共有と専有が両立するケースは?
A3: 通常のS/Xモデルではない特別なロック方式(例: バージョニングや楽観的同時実行)では両立の扱いが異なるが、伝統的なロック両立性ではSとXは両立しない。
A3: 通常のS/Xモデルではない特別なロック方式(例: バージョニングや楽観的同時実行)では両立の扱いが異なるが、伝統的なロック両立性ではSとXは両立しない。
関連キーワード: デッドロック、二相ロック、共有ロック、排他ロック、ロック両立性、ロック変換、読み取り優先、書き込み優先、意図ロック、ロック粒度

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

