今日はなにの日。

気になったこと勉強になったことのメモ。

今日は、「MVCC」を雑に調べてみるの日。

目次

とある日

Tsurugiの本を読み、昨今のRDBやDBの常識が変わりつつあるなと思いました。

そこで、最近よく「MVCC」という単語を耳にするので、今年一年をかけて理解するためのはじめの一歩として「MVCC」を調べてみます。

MVCCとは

  • 多版同時実行制御(multiversion concurrency control, MVCC)

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

MultiVersion Concurrency Control - Wikipedia

「「マルチバージョン同時実行性制御」」の頭字語。 この手法により、特定の*分離レベル*を使用した InnoDB *transactions**読取り一貫性*操作を実行できます。つまり、他のトランザクションによって更新されている行をクエリーして、それらの更新が発生する前の値を確認できます。 これは、ほかのトランザクションが保持している*ロック*のために待機することなく、クエリーが進行できるようにすることによって、*並列性*を高める強力な方法です。

MySQL :: MySQL 8.0 リファレンスマニュアル :: MySQL 用語集

Tsurugiの奥が深すぎて、読み応えがあります。

MVCCは、言ってることは単純かもしれないですがそれを実装したり活用するのはかなり難しそうな印象です。

参考資料

MVCC(多版型同時実行制御)

MySQLのMVCC #MySQL - Qiita

増永教授のDB特論⑧「MVCC」

TiKV - トランザクション& MVCC - Speaker Deck