Concept
MVCC
Multiversion Concurrency Control: PostgreSQL's mechanism that lets readers see a consistent snapshot of the database without blocking writers.
MVCC stores multiple versions of each row, tagged with the transactions that created and deleted them. When you start a transaction, PostgreSQL gives you a snapshot; you only see versions that were committed before your snapshot and not deleted by it.
This is what makes SELECT queries effectively non-blocking on PostgreSQL: writers never wait for readers, and readers never wait for writers. Conflicts only happen when two transactions try to modify the same row.
The trade-off is that obsolete row versions accumulate on disk and have to be reclaimed later — that is the job of VACUUM and autovacuum. Without them, dead tuples cause table bloat and stale visibility information.