Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Навіщо потрібен журнал undo / rollback log?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Журнал undo (чи rollback log)** потрібен, щоб **скасовувати зміни**, зроблені транзакцією, якщо вона завершилася помилкою чи була відкочена (`ROLLBACK`): зберігає **старі версії даних** - те, що було *до початку змін*. **Ключове:** окрім відкату, undo-журнал забезпечує **атомарність** транзакцій (A в ACID) і реалізує **багатоверсійність (MVCC)** - читання «старих» даних, поки інші транзакції їх змінюють; якщо сервер раптово вимкнеться до `COMMIT`, undo-журнал дозволить скасувати списання й повернути старий баланс.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення**Журнал 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-журнал - це **страховка даних**, яка зберігає «що було до» і дозволяє безпечно скасувати будь-які незавершені зміни.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.