Skip to main content

Навіщо потрібен журнал undo / rollback log?

Журнал undo (чи rollback log) потрібен, щоб скасовувати зміни, зроблені транзакцією, якщо вона завершилася помилкою чи була відкочена (ROLLBACK).

Він зберігає старі версії даних - те, що було до початку змін.

Як це працює

  1. Коли транзакція змінює дані (наприклад, UPDATE), СУБД записує в undo-журнал попередній стан рядків.
  2. Якщо транзакція успішно завершується (COMMIT) - записи журналу можна очистити.
  3. Якщо транзакція переривається - СУБД використовує undo-журнал, щоб відновити старі значення й повернути базу в узгоджений стан.

Приклад

sql
UPDATE users SET balance = balance - 100 WHERE id = 1;

Якщо сервер раптово вимкнеться до COMMIT, undo-журнал дозволить скасувати списання й повернути старий баланс.

Крім відкату, undo-журнал допомагає:

  • забезпечувати атомарність транзакцій (A в ACID),
  • реалізовувати багатоверсійність (MVCC) - читання «старих» даних, поки інші транзакції їх змінюють.

Підсумок: undo-журнал - це страховка даних, яка зберігає «що було до» і дозволяє безпечно скасувати будь-які незавершені зміни.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.