Comment by mdavidn
5 years ago
Postgres implicitly creates a transaction for any query modifying data outside of one.
Transactions in MVCC are relatively cheap. The main resource of contention is a global txid that can disastrously wrap around if autovacuum is disabled. That process is responsible for a few other important tasks, like updating statistics for the query planner and maintaining BRIN indexes.
> Postgres implicitly creates a transaction for any query modifying data outside of one.
I should clarify. I meant holding a transaction for the duration of the message.