『実践 Rails』 4章 データベース 〜 MVCC 〜
MVCC
PostgreSQLの同時処理のサポートは、MySQLのものよりもずっと成熟している。PostgreSQLは、行レベルのロックよりもさらに高度なMVCC(Multiversion Concurrency Control)をサポートしている。
このあとで、MVCCの説明がある。
Rails本でMVCCのことを説明するとはちょっとおどろいた。おどろいたけど、いかにもこの本らしい。
ただ、この本ではPostgreSQLだけがMVCCサポートしているように読めるんだけど、MVCCの元祖ってOracleだと個人的には思うし、SQL Serverの新しいやつはたしかサポートしてたはずだし、MySQLもFalconはMVCCサポートしてるようです。
あと、MVCCの説明の最後で
同時トランザクションの分離が通常はパフォーマンスと引き換えに実現されることに注意しよう。MVCCは、進行中のトランザクションごとにスナップショットを格納しなければならないので、ロックよりもストレージ領域を消費する。また、MVCCは読み取りをブロックしないが、DBMSは競合を発生させる更新トランザクションをロールバックすることがある。
とあるけども、ストレージ領域を消費する件はお金掛ければなんとでもなる話だし、ロールバックをされてしまう件はまあ、楽観的ロックなり悲観的ロックなりを入れるだろうから別に問題でないと思う。
実践 Rails -強力なWebアプリケーションをすばやく構築するテクニック | |
株式会社クイープ オライリージャパン 2008-10-27 売り上げランキング : 32255 おすすめ平均 「Railsの外側」の問題解決の宝庫 Amazonで詳しく見る by G-Tools |