http://mooya.ath.cx/CubeDeZope/2005/06/20050601230136
さすがmooyaさんだ。早速負荷実験している:-)。
これまで,ZODB上で書き込み中のオブジェクトを閲覧しようとすると,書き込みのトランザクションに阻まれて閲覧用のプロセスまでロックされていたのが,MVCCが実装されたことによってトランザクションを避けてくれるようになった,ってことでいいのかな。ZODBは追記型のアーキテクチャですから,該当オブジェクトの「直前に保存した分のポインタ」をさして閲覧に利用してくれるようになったんでしょう。PostgreSQLのMVCC実装も同じ手法だったはず。
ロックされる機会が少なくなったので,単一のプロセスがレスポンスをはき出すまでの処理時間が短くなり,結果として応答性能が良くなる。プロセス数を増やさなくてもさくさく動くようになったのはそういうわけなんでしょうね。
ZODB 3.3の「書き込みの速度」についてはちと気になっています。New Style Classに対応したことで,以下のような影響を受けるのではないかと。
石本さんのところを紹介したついでにこっちも読んでおくとおもしろいかも:-)。
- だからZODBにデータ書くな、つーのに
- http://gembook.jp/tsum/page.pys?wiki=ZopeZodb