|
原帖由 Yong Huang 于 2010-11-23 23:42 发表 ![]()
> MVCC不过是方便懒惰的程序员的一种方式,而且不是好的方式,就算是要满足懒惰的程序员,2VCC就够了。就象timesten,新版本的INFORMIX/DB2那样。
> MVCC没任何业务上的意义,而且带来了巨大的开销。
I think MVCC is what readers-not-blocking-writers and writers-not-blocking-readers do. If you don't have MVCC, after one session changes data before he commits, all queries will block. Correct? And the same to sessions intending to change data which are blocked by queries. In OLTP, it's not a big problem because everything is short and quick. But in a data warehouse, the wait would be too long.
Yong Huang
No! Timesten不支持MVCC,一样做到你提到的读写不block。同样INFORMIX 11.1开始,DB2 9.7开始,也做到了读写不block,但都没实现MVCC。其实这些都是简化OLTP的开发人员的懒惰而已。这些的不block其实是通过2VCC实现的,DB只保留两个版本的数据,一个是未提交的,另外一个是提交的。MVCC机制太复杂了,根据查询的具体情况,会保留太多版本数据,还老要写到磁盘上面。
MVCC是实现两个session读写相同数据不block的充分条件,非必要条件。
至于DW,对于连2VCC都不支持的情况,非要不block,一般来说大不了用脏读就可以了。
[ 本帖最后由 wolfop 于 2010-11-25 17:10 编辑 ] |
|