IBMサイトで公開されているCouchDBの古い概要 [〜#〜]こちら[〜#〜] を読んで、私は以下を見つけて驚きました:
Oracle(V7以降)、MySQL(InnoDBで使用する場合)、Microsoft®SQL Server 2005以降など、最新のデータベースのほとんどがロックメカニズムからMVCCに移行し始めています。
私は現時点(V2012)でSQL Serverをかなり使用しており、何らかの形のMVCCが存在する可能性があるとはまったく考えていません。私は以前にもストアドプロシージャでwith (tablock, holdlock)
を使用しました。
SQL Serverは実際にMVCCをどこにでも実装しますか?実装する場合、それはwith (tablock, holdlock)
の考え方とどのように調和しますか?
SQL Serverは本当にどこにでもMVCCを実装しますか
はい、SQL Server 2005以降です。
SQL Serverの用語は、「行バージョン管理分離レベル」です。 Locking and Row Versioning で始まる製品ドキュメントツリーを参照してください。特に、2つの個別の「MVCC」実装があることに注意してください。行のバージョニングを使用したコミット読み取り分離(RCSI)とスナップショット分離(SI)。
そして、もしそうなら、それはどのように
with (tablock, holdlock)
の考えと調和しますか?
ヒントの組み合わせを使用すると、テーブル全体へのアクセスがシリアル化されます。これは使用可能な同時オプションの中で最も少ないため、これらのヒントを使用することは非常にまれです。特定の用途をRCSIまたはSI分離で置き換えることができるかどうかは、特定の状況によって異なります。具体的な例を挙げてフォローアップの質問をすることで、その側面について詳しく説明することができます。
また、SQL Serverの分離レベルについて、私の 一連の記事 を読むこともできます。