Встречается на собеседованиях • сегодня

Что такое версионирование записей в PostgreSQL

Версионирование записей в PostgreSQL (MVCC — Multi-Version Concurrency Control) — это механизм, позволяющий нескольким транзакциям работать с одними данными без блокировок. Каждая запись может иметь несколько версий, что обеспечивает изоляцию транзакций и высокую производительность.

Как работает:

  1. При изменении записи создается новая версия, а старая остается для других транзакций
  2. Каждая версия содержит xmin (идентификатор создавшей транзакции) и xmax (идентификатор удалившей транзакции)
  3. Видимость версий определяется на момент начала транзакции

Пример:

sql
-- Транзакция 1 (началась первой)
BEGIN;
SELECT * FROM users WHERE id = 1;  -- Видит версию X

-- Транзакция 2 изменяет запись
BEGIN;
UPDATE users SET name = 'New' WHERE id = 1;
COMMIT;

-- Транзакция 1 продолжает видеть старую версию
SELECT * FROM users WHERE id = 1;  -- Все еще версия X
COMMIT;

Плюсы:

  • Высокий параллелизм (чтение не блокирует запись)
  • Отсутствие блокировок для чтения
  • Поддержка изоляции транзакций на разных уровнях

Минусы:

  • Накапливается "мусор" от старых версий (требует VACUUM)
  • Может приводить к фантомному чтению на некоторых уровнях изоляции
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы