MVCC
Multiversion Concurrency Controlの略.
トランザクション処理に用いるデータストレージについての分類.
同じタプル$ xについて複数のバージョン$ x_1, x_2, x_3,..., x_nを取ることを許容すること.
このとき$ nのバージョンが取れるならNVCCと呼ばれる.
論理的に無限のバージョンを考えるとき,MVCCといわれる.
つまり,1VCCは$ n=1のときのことを指す.
MVCCもNVCCも1VCCも,全てユーザから見えるシンタックス/セマンティクス(ページモデル(The Page Model))は同じである.よって,純粋に性能のみの議論ができる.
一般にMVCCは,理論的に性能の高い手法を作りやすい(FYI: MVSR)といわれる.
が,「複数のバージョン」の実装が線形リストになることが多く,この操作にかかるオーバヘッドが手痛い.
性能特性や適したワークロードなども多くの論文で議論されている.
特に有名なのは以下(インメモリDBの論文に限定する):
Staring into the abyss: an evaluation of concurrency control with one thousand cores
An empirical evaluation of in-memory multi-version concurrency control