Also called: Multiversion concurrency control
In plain English
Instead of locking a row while someone reads it, PostgreSQL keeps several versions of that row. Readers see the version that existed when their query (or transaction) started, and writers create a new version. The result: readers never block writers and writers never block readers.
Why it matters
MVCC is why PostgreSQL handles many concurrent users smoothly, but it is also why old row versions (dead tuples) pile up and must be cleaned by VACUUM. Understanding it explains bloat, long-running transactions, and why a forgotten open transaction can stop cleanup.
En palabras simples
En lugar de bloquear una fila mientras alguien la lee, PostgreSQL guarda varias versiones de esa fila. Quien lee ve la version que existia cuando empezo su consulta, y quien escribe crea una version nueva. Resultado: las lecturas no bloquean a las escrituras ni al reves.
Por que importa
MVCC es la razon por la que PostgreSQL maneja bien muchos usuarios a la vez, pero tambien por la que se acumulan versiones viejas (tuplas muertas) que VACUUM debe limpiar. Entenderlo explica el bloat, las transacciones largas y por que una transaccion abierta y olvidada detiene la limpieza.