Этап 5 из 15 · ≈ 4 ч

Транзакции и изоляция

Основа с Junior

ACID, уровни изоляции, аномалии, блокировки и MVCC.

Что важно знать

  • ACID: атомарность, согласованность, изоляция, долговечность.
  • Уровни: Read Committed (по умолчанию в PostgreSQL), Repeatable Read, Serializable — чем строже, тем меньше аномалий и больше конфликтов.
  • Аномалии: грязное и неповторяющееся чтение, фантомы, потерянное обновление, write skew.
  • Оптимистическая блокировка — версия строки; пессимистическая — SELECT … FOR UPDATE.
  • MVCC — читатели не блокируют писателей, у каждой транзакции свой снимок.
  • Длинные транзакции держат блокировки и мешают очистке старых версий.

Критерии освоения

Junior ≈ 4 ч

  • Объясняет ACID и использует транзакцию для связанных изменений

Практика. Реализовать перевод денег между счетами в транзакции и показать, что происходит без неё.

Middle ≈ 8 ч

  • Объясняет уровни изоляции и аномалии на примерах и выбирает уровень под задачу
  • Решает конкурентное обновление оптимистической блокировкой или SELECT FOR UPDATE
  • Объясняет MVCC в PostgreSQL

Практика. Воспроизвести потерянное обновление в двух сессиях psql и исправить двумя способами.

Senior ≈ 4 ч

  • Разбирает взаимные блокировки в базе по логам и устраняет причину

Практика. Смоделировать взаимную блокировку в базе под нагрузкой, найти её в логах и устранить порядком обновлений.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Какие аномалии бывают при параллельных транзакциях и от чего защищает каждый уровень изоляции?Middle

Уровни изоляции — компромисс между параллельностью и корректностью: чем ниже уровень, тем больше аномалий пропускается.

Полный разбор
Что такое MVCC и как он позволяет читать без блокировок?Middle

Многоверсионность: изменение строки создаёт новую версию, а старая остаётся. Каждая транзакция читает снимок — версии, подтверждённые до её начала (или до начала запроса).

Полный разбор
Чем оптимистическая блокировка отличается от пессимистической и когда какую выбрать?Middle

Пессимистическая — сначала блокируем строку (SELECT ... FOR UPDATE), потом меняем; остальные ждут. Оптимистическая — не блокируем, а при записи проверяем версию: UPDATE ... WHERE version = ?; 0 строк — кто-то успел раньше, повторяем или сообщаем.

Полный разбор
Что означает аббревиатура ACID?Junior

ACID — гарантии транзакции: атомарность (всё или ничего), согласованность (инварианты не нарушаются), изоляция (параллельные транзакции не мешают друг другу), долговечность (подтверждённое переживёт сбой).

Полный разбор
Какой уровень изоляции транзакций по стандарту SQL гарантированно предотвращает phantom reads?Middle

По стандарту SQL фантомы гарантированно исключает только SERIALIZABLE. На практике PostgreSQL не показывает фантомов уже на REPEATABLE READ благодаря снимку.

Полный разбор
Чем отличается оптимистичная блокировка от пессимистичной?Middle

Пессимистическая — блокируем строку заранее (SELECT ... FOR UPDATE), остальные ждут. Оптимистическая — не блокируем, а при записи проверяем версию (WHERE version = ?); не совпала — конфликт, повторяем.

Полный разбор
Что такое транзакция в базе данных и как работают BEGIN, COMMIT и ROLLBACK?Junior

Транзакция — группа операций, которая выполняется целиком или никак. BEGIN открывает её, COMMIT фиксирует все изменения разом, ROLLBACK отменяет всё сделанное с начала транзакции. Классический пример — перевод: списать со счёта A и зачислить на счёт B. Если…

Полный разбор
Что такое потерянное обновление и как его избежать?Junior

Два запроса одновременно читают одно значение (остаток 10), каждый вычисляет новое (10 − 1 = 9) и записывает — в итоге 9 вместо 8: одно обновление потеряно. Защита: атомарное обновление в одном запросе (UPDATE ... SET stock = stock - 1 WHERE stock > 0)…

Полный разбор
Что такое состояние гонки?Junior

Гонка — результат зависит от того, в каком порядке потоки выполнили свои шаги. Классика: count++ — это три шага (прочитать, прибавить, записать), и два потока теряют обновления.

Полный разбор

Разборы темы

← Вся карта «Backend-разработчик»

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования