Hi,
in my office we were discussing the various ways statement level read consistency is implemented in different databases, namely Oracle and Postgres.
I am interested in the technical details on how PG determines that a block needs to be read from from "some other place than the data block" because another transaction has updated the data block.
I'm referring to the scenario that Tom Kyte describes here:
www.oracle.com/technology/oramag/oracle/05-nov/o65asktom.html
and how PG would detect that row 342,023 has been modified by a different transaction (and thus reads the correct value, unlike "the other database")
Oracle assigns a SCN (system change number) to each transaction, each block contains the SCN for which it is valid, any number higher than the current SCN indicates that the block has to be taken from the rollback segment.
How is this "test" implemented in Postgres?
Does it have a similar concept (SCN) or does WAL imply a completely different way?
Thanks in advance
Thomas