DBデータベーススペシャリスト試験 午前Ⅱ

令和3年度秋期 データベーススペシャリスト 午前Ⅱ 問14

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

RDBMSのロックに関する記述のうち,適切なものはどれか。ここで,X,Yはトランザクションとする。

選択肢

  1. ア
    XがA表内の特定行aに対して共有ロックを獲得しているときは,YはA表内の別の特定行bに対して専有ロックを獲得することができない。
  2. イ
    XがA表内の特定行aに対して共有ロックを獲得しているときは,YはA表に対して専有ロックを獲得することができない。
  3. ウ
    XがA表に対して共有ロックを獲得しているときでも,YはA表に対して専有ロックを獲得することができる。
  4. エ
    XがA表に対して専有ロックを獲得しているときでも,YはA表内の特定行aに対して専有ロックを獲得することができる。
解き方のヒントを見る

トランザクション間のロック競合の見方

RDBMSのロックを考えるときは、各トランザクションがどの資源に対してどの操作を行い、同時実行時に他方の処理へどのような影響が及ぶかを整理することが重要です。用語の定義と前提条件にも注意してください。

この問題で問われていること

XとYの処理を個別に追うのではなく、同じデータ資源への操作が重なった場面で、ロックの取得・待機・解放という観点から、記述が何を主張しているかを確認してください。特に前提の違いを混同しないことが大切です。

視点

トランザクション間で同一資源へのアクセスが発生したとき、ロックの対象、操作の種類、処理の順序が競合や待機にどう関係するかを整理しましょう。

確認ポイント

  • XとYが扱う資源や操作の関係を確認する
  • ロック取得後の処理順序と待機の有無に注目する
  • ロック解放の契機と、前提条件の違いを区別する
正解と解説を見る

正解

イ

解説

共有ロックは同時参照を許すが、専有ロックとは両立しない。特に表全体を対象とする専有ロックは、その表内の行に共有ロックがある場合にも取得できない。

理由

共有ロックはデータを読み取るためのロックで、他トランザクションの共有ロックとは共存できる。一方、専有ロックは更新などのために他のロックを排除するため、同じ対象または包含関係にある対象の共有ロックと競合する。

比較

行aへの共有ロックは、別の行bへの専有ロックとは対象が異なるため通常は競合しない。しかし、表全体への専有ロックは表内の行を含むため、行aの共有ロックと競合する。表全体の共有ロックと専有ロックも競合し、表の専有ロック中に行の専有ロックを取得することもできない。

選択肢ア

これは不正解だよ。Xの共有ロックはA表内の特定行aだけを対象としているため、Yが別の特定行bを対象に専有ロックを要求しても、対象が重ならず通常は競合しない。行ロックでは、異なる行への操作を同時に進められる。

選択肢イ(正解)

これは正解だよ。Xが行aに共有ロックを持つ状態で、YがA表全体の専有ロックを要求すると、表全体の範囲には行aも含まれる。専有ロックは共有ロックと両立しないため、Yはその表ロックを獲得できない。

選択肢ウ

これは不正解だよ。XがA表全体に共有ロックを獲得している場合、Yが同じA表全体に専有ロックを獲得する要求は、共有ロックと専有ロックの競合になる。したがって、共有ロックが保持されている間は専有ロックを取得できない。

選択肢エ

これは不正解だよ。XがA表全体に専有ロックを獲得しているなら、その範囲にはA表内の特定行aも含まれる。専有ロックによって他トランザクションのロック取得が妨げられるため、Yは行aに対して専有ロックを獲得できない。

学習のポイント

ロックの種類だけでなく、行ロックと表ロックの粒度および競合範囲を理解する。

出典:独立行政法人 情報処理推進機構(IPA)令和3年度秋期 データベーススペシャリスト試験 午前Ⅱ 問14(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針