平成27年度 春期28テクノロジ系

基本情報 平成27年度 春期 問28:テクノロジ系に関する問題

“出庫記録" 表に対する SQL 文のうち, 最も大きな値が得られるものはどれか。 出庫記録 商品番号 日付 数量 NP200 | 2015-10-10 FP233 | 2015-10-10 NP200 | 2015-10-11 FP233 | 2015-10-11 【トら 111 OO SELECT AVG(数量) FROM 出庫記録 WHERE 商品番号 = NP200' SELECT COUNT(*) FROM 出庫記録 SELECT MAX(数量) FROM 出庫記録 SELECT SUM(数量) FROM 出庫記録 WHERE 日付 = 2015-10-11' H さいぺ 問29 ロックの両立性に関する記述のうち, 適切かものはどれか。

  • aトランザクション 征,」 が共有ロックを獲得している資源に対して, トランザクシ ョン T。は共有ロックと専有ロックのどちらも獲得することができる。
  • bトランザクション 征, が共有ロックを獲得している資源に対して, トランザクシ ョン T。 は共有ロックを獲得することはできるが, 専有ロックを獲得することはで きない。正答
  • cトランザクション T」 が専有ロックを獲得している資源に対して, トランザクシ ョン T。は専有ロックと共有ロックのどちらも獲得することができる。
  • dトランザクション T, が専有ロックを獲得している資源に対して, トランザクシ ョン T。 は専有ロックを獲得することはできるが, 共有ロックを獲得することはで きない。
正答:Bトランザクション 征, が共有ロックを獲得している資源に対して, トランザクシ ョン T。 は共有ロックを獲得することはできるが, 専有ロックを獲得することはで きない。

AI解説(初心者・標準・上級)

理解度に合わせて3レベルの解説を無料で読めます。

初心者向けまずはここから。やさしく要点を解説

答えは b「ロックされた資源には、共有ロックは取れるが専有ロックは取れない」です。

ロックは図書館の本に例えるとわかりやすい。

  • 共有ロック(読むだけ)=みんなで一緒に読書OK
  • 専有ロック(書く)=一人で独占して書き込み中、他の人は読めない

誰かが「読書中」のとき、別の人も読書(共有)に加われるけど、書く(専有)のはできません。

👉 覚え方:「読みは譲り合えるけど、書きは独占」。

ほかの選択肢:a 共有時に専有が取れる=×/c 専有時に他が割り込める=×/d 専有時にも別の専有が取れる=×。

標準試験対策の基準レベル

なぜこれが正解か

正解は b。ロックの両立性(Lock Compatibility)の原則は次の表で表される:

| 取得済み \ 要求 | 共有ロック | 専有ロック |

|---|---|---|

| 共有ロック | ○(両立) | ×(待機) |

| 専有ロック | ×(待機) | ×(待機) |

共有ロック(Shared Lock:読み取り用)同士は両立可能、専有ロック(Exclusive Lock:書き込み用)は他のいかなるロックも排除する。

各選択肢の解説

  • a 誤り:共有ロック取得中に専有ロックは取れない(書き込み中は他の読み取りも止める必要があるため)。
  • c 誤り:専有ロック中は共有ロックも取れない(読み取り一貫性確保のため)。
  • d 誤り:専有ロック中は別の専有ロックも取れない。

覚え方・ひっかけ注意

共有⇔共有:OK/その他全部:NG」とシンプルに記憶。共有ロックの目的は「読み取り中に変更されない保証」、専有ロックは「自分以外何もさせない」。デッドロック検出・回避(ウェイトダイ/ウンドダイ方式)と併せて出題されることが多い。

上級誤答論破・背景理論まで深掘り

理論的背景

ロック粒度(テーブルロック・ページロック・行ロック)、ロック方式(悲観的ロック・楽観的ロック)、トランザクション分離レベル(READ UNCOMMITTED / READ COMMITTED / REPEATABLE READ / SERIALIZABLE)はACIDのI(Isolation)を実現する仕組み。2相ロッキングプロトコル(2PL:Two-Phase Locking)はロック取得フェーズと解放フェーズを分離することで直列化可能性を保証する。

実務での使われ方

商用DBMSの実装:

  • Oracle:MVCC(Multi-Version Concurrency Control)でリードロック原則不要
  • PostgreSQL:MVCC+明示的ロック(SELECT FOR UPDATE / FOR SHARE)
  • MySQL InnoDB:行ロック+次キーロック(Next-Key Lock)でファントム読み防止

WebアプリではDB側ロックよりアプリ層の楽観的ロック(version列+WHERE句チェック)が主流で、ロング待機回避とスケーラビリティを両立する。

試験での位置づけ

データベース分野で頻出。基本情報・応用情報・データベーススペシャリストで隔回出題。デッドロック検出・回避、分離レベルとアノマリ(ダーティリード/ファジーリード/ファントムリード)の対応は必須暗記。

選択肢の発展補足

  • ロックエスカレーション:行ロック多数→ページロック→テーブルロックへ昇格(オーバーヘッド削減)。
  • インテンションロック(IX/IS/SIX):階層ロックで上位レベルへの予告。
  • スナップショット分離(SI:Snapshot Isolation):MVCC実装の中核。書き込みスキューに弱いがSerializable Snapshot Isolation(SSI:PostgreSQL)で対策。
  • 分散DBでは2PC(2相コミット)・PaxosやRaftによる合意形成と組み合わせ、CAP定理/PACELC定理の文脈で出題される。
出典・引用について

出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成27年度 春期28/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。

テクノロジ系の他の過去問

1
テクノロジ系
2
テクノロジ系
3
テクノロジ系
4
テクノロジ系
5
テクノロジ系

あなたの弱点を診断して、合格までの最短ルートを

この分野を連続演習し、AIがあなたの弱点を分析。合格ナビなら基本情報の過去問を解きながら学べます。