Transaction visibility with multiversion concurrency control
One design decision any database needs to make is how to handle the situation where multiple clients might be interacting with the same data. PostgreSQL uses a popular approach called Multiversion Concurrency Control (MVCC) to handle this job. MVCC is also used in BerkeleyDB, Sybase SQL Anywhere, Oracle, and many other database products; it's a general technique and not something specific to PostgreSQL. The introduction to MVCC in the documentation at http://www.postgresql.org/docs/current/static/mvcc-intro.html makes the concept sound more complicated than it is. It's easier to understand with some simple examples, which we'll go through shortly.