MVCC(Multi-Version Concurrency Control)

久しぶりにDBで調べごとしたら、聞きなれない用語が気になって仕方ありません。10年くらい前にデータベースバリバリ利用していたことには、こんなMVCCって用語はあまり聞きませんでしたけどね。勿論、行ロックにページロック、オプティミステックロックやペシミスティックロックなどは意識していましたけどね。

MultiVersion Concurrency Control (MVCC, マルチバージョン コンカレンシー コントロール) は、データベース管理システムの可用性を向上させる制御技術のひとつ。複数のユーザから同時に処理要求が行われた場合でも同時並行性を失わずに処理し、かつ情報の一貫性を保証する仕組みが提供される。日本では多版型同時実行制御、多重バージョン並行処理制御などと訳される。また単にマルチバージョンとも呼ばれる。

この処理って昔からデータベースならあたりまえだと思っていましたよ。勿論、ORACLEはORACLE7の時代からMVCCを採用していましたが、その頃のSQLserverも動き的には、読み込みではロックかからずにトランザクション開始前のデータを読めていたようなきがするんだけどね。気のせいだったのかな?それとも、MVCCの理解がまだ誤ってる?