Уровень изоляции
Определяет, насколько транзакция изолирована от изменений других транзакций.
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- или:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;Объяснение
Пример
-- Для финансовых операций
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SELECT balance FROM accounts WHERE id = 1; -- 1000
-- Другая транзакция НЕ может изменить это значение
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
COMMIT;Связанные термины
Анекдоты по теме
— Папа, а что такое транзакция? — Это когда ты говоришь маме «Я мою посуду», начинаешь мыть, но если она входит на кухню — делаешь ROLLBACK и говоришь «Я ещё не начинал».
— Что такое HOT update в PostgreSQL? — Heap Only Tuple. Если обновлённые колонки не входят в индексы — PostgreSQL обновляет строку без изменения индекса. — Это быстрее? — Значительно. Индекс не трогается.
— Что такое index bloat? — Индекс «раздувается» со временем из-за мёртвых версий строк. — Как проверить? — pgstattuple расширение: SELECT * FROM pgstatindex('idx_name'); — Как исправить? — REINDEX CONCURRENTLY idx_name; — перестраивает без блокировки. — VACUUM не помогает? — Помогает частично. Тяжёлый bloat — REINDEX.