忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【データベース】読み書きをブロックしない!「多版同時実行制御(MVCC)」|情報処理問題1000本ノック

データベースのパフォーマンスを落とさずに、複数のユーザーが同時にデータを読み書きするための高度な制御技術「MVCC」の仕組みを攻略しましょう。

1. 問題:高効率な同時実行制御

【 問題 】 リレーショナルデータベースにおいて、データの更新時に元のデータを直接書き換えるのではなく、新しい「版(バージョン)」を作成することで、読み込み処理と書き込み処理が互いにブロック(排他)されないように制御する方式を何と呼ぶでしょうか?

ア、2相ロック方式   イ、多版同時実行制御(MVCC)   ウ、楽観的並行性制御   エ、デッドロック検知

2. 正解:トランザクション制御に関する正解

正解: イ、多版同時実行制御(MVCC:Multi-Version Concurrency Control)

3. 解説:バージョン管理による「待機」の解消

MVCCは、データに時間的な広がり(複数のバージョン)を持たせることで、一貫性と並列性を両立させる技術です。

【図解:MVCCの動作メカニズム】

■ 新しい「版」の作成
・データを更新する際、古いデータはそのまま残し、新しい値を持つ「新しい版」を追加します。

■ トランザクションIDによる管理
・各版には、それを作成したトランザクションIDやタイムスタンプが付与されます。

■ 読み込みと書き込みの両立
・書き込み中(新しい版を作成中)であっても、他のユーザーは「自分の開始時点よりも前の古い版」を読むことができるため、読み書きの競合(ロック待ち)が発生しません。
[ エンジニア視点の補足 ]
不要な版の回収:古い版が溜まり続けるとディスクを圧迫するため、PostgreSQLの「VACUUM」のように、不要になった版を回収する仕組みが必要です。
一貫性:各トランザクションは、実行開始時点の「スナップショット」を見ている状態になるため、データの整合性が保たれます。

1. 理解のコツ: 「上書き保存」ではなく、常に「別名で保存」を繰り返しているイメージです。古いファイルが残っているので、誰かが編集中でも他の人は古いファイルを読み続けられる、というのがMVCCの強みです。
2. 試験対策の視点: 「新しい版を作成」「読み書きが衝突しない」「トランザクションIDで管理」といったキーワードが出たらMVCCを指します。伝統的な「ロック方式」との違いを意識して覚えましょう。


4. まとめ

「データの新しい版を作成し、排他を行わずに同時実行性を高める」。これが多版同時実行制御(MVCC)です。大規模なアクセスをさばく現代のデータベースエンジンにおいて、心臓部とも言える重要な技術であることを押さえておきましょう。



PR