Результаты поиска
MVCC и снимки транзакций
Зачем это знать:
-
Объясняет, почему UPDATE/DELETE не “удаляет сразу”.
-
Объясняет bloat, autovacuum, и почему длинные транзакции опасны.
Связанные темы:
Блокировки, уровни изоляции и дедлоки
WAL, Checkpoint и восстановление
Суть MVCC
-
Читатели не блокируют писателей (и наоборот) в типичных сценариях.
-
Вместо “перезаписать строку” PostgreSQL чаще создаёт новую версию.
-
Видимость версий определяется снимком транзакции (snapshot).
Практические последствия
-
Длинные транзакции удерживают старые версии “живыми” ⇒ VACUUM не может их убрать ⇒ растёт bloat.
-
Частые UPDATE одной и той же строки ⇒ много “мёртвых” версий ⇒ нагрузка на VACUUM.
-
“SELECT без нужды в транзакции” и “забыли COMMIT” — типовая причина деградации.