データベーススペシャリスト試験 2021年 午前216


多版同時実行制御(MVCC)の特徴のうち適切なものはどれか。
アプリケーションプログラムからデータに対する明示的なロックをかけることができない。
データアクセスの対象となる版をアプリケーションプログラムが指定する必要がある。
データ書込みに対して新しい版を生成し同時にデータ読取りが実行されるときの排他制御による待ちを回避する。(正解)
デッドロックは発生しない。

解説

多版同時実行制御(MVCC)の特徴のうち適切なものはどれか【午前2 解説】

要点まとめ

  • 結論:MVCCはデータ書込み時に新しい版を生成し、読取りと書込みの排他制御による待ちを回避します。
  • 根拠:MVCCは複数のデータ版を管理し、読取り処理が書込み処理に影響されずに並行実行可能です。
  • 差がつくポイント:ロックの有無やデッドロックの発生可能性を正確に理解し、MVCCの仕組みを区別できることが重要です。

正解の理由

選択肢ウは「データ書込みに対して新しい版を生成し同時にデータ読取りが実行されるときの排他制御による待ちを回避する」と述べています。
これはMVCCの本質であり、書込み時に新しいデータ版を作成することで、読取りは古い版を参照し続けられるため、ロック待ちが発生しません。
したがって、同時実行性が高まり、性能向上に寄与します。

よくある誤解

MVCCはロックを全く使わないわけではなく、内部的に軽量なロックを使う場合もあります。
また、デッドロックが絶対に発生しないわけではなく、発生確率は低減されますがゼロではありません。

解法ステップ

  1. MVCCの基本概念を理解する(複数のデータ版を管理し、読取りと書込みを分離)。
  2. 各選択肢の内容をMVCCの特徴と照らし合わせる。
  3. 「明示的なロックの有無」「アプリケーションが版を指定するか」「排他制御の待ちの有無」「デッドロックの発生可能性」を検討。
  4. 最も正確にMVCCの特徴を表す選択肢を選ぶ。

選択肢別の誤答解説

  • ア: 「アプリケーションプログラムから明示的なロックをかけられない」は誤り。MVCCは内部でロック管理を行うが、明示的ロック禁止とは限りません。
  • イ: 「アプリケーションが版を指定する必要がある」は誤り。版の管理はDBMS内部で自動的に行われます。
  • ウ: 「書込み時に新しい版を生成し、読取りの排他待ちを回避する」は正解。MVCCの本質的特徴です。
  • エ: 「デッドロックは発生しない」は誤り。MVCCにより発生確率は減るが、完全に排除されるわけではありません。

補足コラム

MVCCは主にデータベース管理システムで採用され、トランザクションの一貫性を保ちながら高い並行性を実現します。
代表的なDBMSではPostgreSQLやOracleがMVCCを採用し、読み取り専用トランザクションの性能向上に寄与しています。

FAQ

Q: MVCCはロックを全く使わないのですか?
A: いいえ。MVCCは主に読み取りと書き込みの競合を避けるために複数版を管理しますが、内部的には軽量なロックを使うことがあります。
Q: MVCCでデッドロックは完全に防げますか?
A: いいえ。MVCCによりデッドロックの発生確率は低減しますが、完全に防ぐことはできません。

関連キーワード: MVCC, 多版同時実行制御, トランザクション制御, 排他制御, データベース, 並行制御, デッドロック
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ