SQL Serverでも読み取り一貫性が実現されているのだが

Pocket

ロックに苦しむ / PAKUTASO
ロックに苦しむ / PAKUTASO

過去、Oracle Databaseの売りであった読み取り一貫性は、
SQL Serverでも2005から実装されている。

読み取り一貫性、すなわち、
「更新中のレコードを参照した場合、更新前の確定データを読み取る」という機能である。
ダーティリードではないし、参照が待たされることもない。

しかし、どうもこのSQL Server式の読み取り一貫性、
おなじみ機能として世に普及しているのかどうか、よく分からなくなってきた。
個人的な感想ですけどもね。

そう感じた理由をまとめてみました。

  • ググったときにヒットする日本語の情報が少ない。
  • 実装として「行のバージョン管理を使用する READ COMMITTED 分離レベル」と「スナップショット分離レベル」の2種類があるが、どう違うのか分かりにくい。
  • 「行のバージョン管理を使用する READ COMMITTED 分離レベル」に呼びやすい名称がない。そのくせこっちが推奨。
  • インフラに対する考慮が「tempdb には十分なディスク領域が必要」程度の指針しか見当たらない。
  • 既定でオフ。

SQL Serverでも読み取り一貫性ができるんだよ!というセールストークはよく聞くものの、
技術者への布教には力が入っていないのではないかな〜MSさん、という気がしています。

自分の理解を深める意味でも、このネタだけで勉強会を開催してみたいと考えています。

【参考】
データベース エンジンにおける分離レベル
行のバージョン管理に基づく分離レベルについて
行のバージョン管理に基づく分離レベルの選択

About Quatrex 30 Articles
晴れときどきデータベース

Be the first to comment

Leave a Reply