In PostgreSQL an UPDATE does not overwrite a row: it writes a new version and marks the old one as ended. Each query uses a snapshot to decide which versions it may see. The price is dead versions that VACUUM must clean up later.
MVCC
Multi-version concurrency control: the database keeps several versions of a row so readers and writers do not block each other.