Comment Re:I think you're full of it. (Score 1) 147
There is no fundamental difference in the semantics of InnoDB's MVCC and PostgreSQL's MVCC, but there are minor differences. In PostgreSQL-8.1, the default transaction isolation level is READ COMMITTED (like in Oracle), while in InnoDB it is REPEATABLE READ (one can choose READ COMMITTED if one likes). I chose REPEATABLE READ as InnoDB's default isolation level, because then all consistent read SELECTs within one transaction see the same snapshot of the database, and give consistent results with respect to each other.
The implementation of MVCC is quite different in PostgreSQL and InnoDB. InnoDB keeps track of delete-marked records in indexes (the data of the row is in the clustered index), and removes them as soon as they are not needed in consistent read SELECTs. PostgreSQL does not keep track of deleted records and rows, and therefore you from time to time need to run the 'vacuum' over the entire database.