SnapShot分離レベルについて [SQL Server]
SQL Server 2005から投入されたSnapShot分離レベルですが、
平たく言えばOracleでいうところの読み取り一貫性を実装する機能です。
Oracleでは読み取り一貫性をUndoセグメント(ロールバックセグメント)
を使って実装していますが、SQL Serverでは同じことをtempdbを
使って実装しています。
ここで疑問が。
OracleはUndo表領域とTemp表領域は別物です。
SQL Serverは二つともtempdbに納めます。
物理配置や可用性を考えるとOracleの実装が正しいでしょう。
SQL Serverではなぜtemp領域とbefore image格納先を
同じところにしてしまったのでしょうか。
限界までバリバリ使うとそこがネックになりそうなものです。
Oracleを使っているとスナップショットが古すぎます、とか
UNDOに負荷がかかると色々出てくるものですが、
そこまでSQLは見込んでいない気がします。
さてこれはネガティブな視点。
ポジティブに見るとOracleの開発者が容易に入り込みやすい、
といったメリットがあるのではないかと思います。
またOracleと同じになるということで読み取りにまつわる
ロック待ちが解消されることでしょう。
2008でもtempdbに格納だったと思うんですが
オプションで別なDBに格納できるようになると嬉しいかも。
2011?あたりで実装されたりして。
コメント 0