Как транзакции работают с версиями в MVCC?

В MVCC (многоверсионном контроле конкуренции) каждая транзакция видит снимок данных на момент своего начала, что позволяет избежать блокировок при чтении.

Короткий ответ

Что ответить на собеседовании

В MVCC (многоверсионном контроле конкуренции) каждая транзакция видит снимок данных на момент своего начала, что позволяет избежать блокировок при чтении.

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

Ответ с пояснениями

В MVCC (многоверсионном контроле конкуренции) каждая транзакция видит снимок данных на момент своего начала, что позволяет избежать блокировок при чтении.

Как это работает с транзакциями:

  • При начале транзакции ей присваивается уникальный идентификатор (например, timestamp или transaction ID).
  • Каждая версия строки данных содержит информацию о том, в какой транзакции она была создана и, возможно, удалена.
  • Транзакция видит только те версии данных, которые были зафиксированы до её начала и не были удалены к моменту её старта.
  • При записи транзакция создаёт новую версию строки, не изменяя старую.

Таким образом, транзакции работают с версиями данных, обеспечивая изоляцию и согласованность без блокировок на чтение. Это позволяет повысить параллелизм и производительность.

Пример: если транзакция T1 начала работу, она увидит только версии строк, созданные до её старта. Если параллельно транзакция T2 обновит строку, создав новую версию, T1 её не увидит, пока не завершится.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку