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

平成29年度春期 データベーススペシャリスト 午前Ⅱ 問18

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

問題

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のロックでは、共有ロックは他の共有ロックと共存できる一方、専有ロックとは競合する。また、行単位のロックと表単位のロックでは対象範囲が異なるため、両者の組合せを確認する必要がある。

理由

共有ロックはデータの読み取りを保護するためのロックで、同じ対象への共有ロックとは共存できるが、更新などを行う専有ロックとは共存できない。したがって、ロックの種類と対象範囲を合わせて判断する。

比較

行aへの共有ロックと、別行bへの専有ロックは、行単位で見れば対象が異なるため同時に成立し得る。一方、表全体を対象とする専有ロックは、表内の行に共有ロックがある状態では取得できない。表全体の共有ロックも、表全体の専有ロックとは競合する。

選択肢ア

これは不正解だよ。Xの共有ロックは行aを対象としており、Yの専有ロックは別の行bを対象としている。行単位のロックとして考えれば対象行が異なるため、両者は必ずしも競合せず、Yが専有ロックを取得できないとはいえない。

選択肢イ(正解)

これは正解だよ。Xが行aに共有ロックを保持している状態で、YがA表全体の専有ロックを要求すると、表全体のロック範囲が行aを含む。共有ロックと専有ロックは同じ対象範囲で共存できないため、Yは取得できない。

選択肢ウ

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

選択肢エ

これは不正解だよ。XがA表全体に専有ロックを保持しているなら、そのロックの範囲にはA表内の特定行aも含まれる。Yが行aに専有ロックを要求しても、既に表全体を対象とする専有ロックと競合するため、取得することはできない。

学習のポイント

共有ロックと専有ロックの互換性、および行ロックと表ロックの粒度を整理する。

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

関連する過去問一覧

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