Навіщо потрібен журнал undo / rollback log?
Журнал undo (чи rollback log) потрібен, щоб скасовувати зміни, зроблені транзакцією, якщо вона завершилася помилкою чи була відкочена (ROLLBACK).
Він зберігає старі версії даних - те, що було до початку змін.
Як це працює
- Коли транзакція змінює дані (наприклад,
UPDATE), СУБД записує в undo-журнал попередній стан рядків. - Якщо транзакція успішно завершується (
COMMIT) - записи журналу можна очистити. - Якщо транзакція переривається - СУБД використовує undo-журнал, щоб відновити старі значення й повернути базу в узгоджений стан.
Приклад
sql
UPDATE users SET balance = balance - 100 WHERE id = 1;Якщо сервер раптово вимкнеться до COMMIT, undo-журнал дозволить скасувати списання й повернути старий баланс.
Крім відкату, undo-журнал допомагає:
- забезпечувати атомарність транзакцій (A в ACID),
- реалізовувати багатоверсійність (MVCC) - читання «старих» даних, поки інші транзакції їх змінюють.
Підсумок: undo-журнал - це страховка даних, яка зберігає «що було до» і дозволяє безпечно скасувати будь-які незавершені зміни.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.