Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Підручник з баз даних.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
776.19 Кб
Скачать

Лекція 5.

  1. Відновлення баз даних

При роботі з базою даних її цілісність може бути порушена по ряду причин:

  1. в результаті неузгодженості або помилковості дій, виконуваних при обробці даних СУБД, прикладними програмами або користувачами;

  2. при аварійному завершенні роботи прикладної програми;

  3. в результаті втрати вмісту оперативної пам'яті комп'ютера (м'який збій), наприклад, при відключенні живлення;

  4. при виході з ладу фізичного пристрою зовнішньої пам'яті, на якому зберігається база даних (жорсткий збій).

При виникненні будь-який з перерахованих ситуацій СУБД повинна автоматично виконати процес повернення бази даних у вихідне узгоджене стан. Цей процес називається відновленням бази даних і підтримується за допомогою журналу, в якому СУБД реєструє всі дії (транзакції), виконувані з даними.

  1. Транзакции

  2. Журнал транзакций

  3. Выполнение транзакций в многопользовательских системах

Транзакції

Транзакцією називається послідовність елементарних операцій, які виконуються над базою даних і переводять базу даних з одного несуперечливого стану в інший. Транзакція - це логічна одиниця роботи з базою даних [2].

Розглянемо приклад транзакції. Припустимо, у базі даних зберігаються відомості про наявність товарів на складах і в магазинах торгівельної фірми. При переміщенні деякого товару зі складу в магазин у базі даних необхідно виконати декілька змін: а) зменшити кількість одиниць товару, що зберігається на складі, на задану величину; б) відповідно збільшити кількість одиниць даного товару в магазині. Отже, розглянута транзакція являє собою не окрему операцію, реалізовану СУБД, а скоріше, погодження кількох таких операцій.

При успішному завершенні транзакції отримані результати зберігаються у зовнішній пам'яті (фіксація транзакцій).

Якщо під час виконання транзакції (до її завершення) відбудеться збій, база даних залишиться в неузгодженому стані. Це є наслідком того, що в проміжних точках виконання транзакції цілісність бази даних порушується (товар зі складу вже відправлений, а в магазин він ще не надійшов). Для відновлення бази даних (її повернення в початковий стан), дії, вже виконані такими транзакціями, скасовуються (відкат транзакцій).

Транзакції повинні мати наступні властивості:

1) атомарности (Atomicity) - транзакція повинна виконуватися повністю або не виконуватися зовсім;

2) узгодженості (Consistency) - транзакція переводить базу даних з одного узгодженого стану в інший з можливим порушенням узгодженості в проміжних точках транзакції;

3) ізольованості (Isolation) - транзакції повинні виконуватися автономно один від одного, при цьому зміни, що вносяться в базу даних деякої транзакцією, до її фіксації повинні бути приховані від інших транзакцій;

4) довговічності (Durability) - після завершення і фіксації транзакції, всі зміни, викликані цією транзакцією в базі даних, зберігаються навіть при виникненні збоїв у системі.

Транзакції, що задовольняють перерахованим вимогам, називають ACID-транзакціями.

Журнал транзакцій

Як зазначалося раніше, всі транзакції реєструються СУБД в журналі транзакцій. Цей журнал недоступний користувачам, зберігається в зовнішній пам'яті (іноді у вигляді двох копій на різних фізичних носіях) і містить інформацію про всі зміни бази даних, викликаних виконуваними транзакціями. Відомості, що містяться в журналі транзакцій, використовуються для відновлення останнього за часом узгодженого стану бази даних після апаратних або програмних збоїв.

Процес відновлення бази даних полягає у скасуванні результатів незавершених транзакцій при збереженні в БД всіх змін, зроблених зафіксованими транзакціями.

Необхідність виконання індивідуального відкату транзакції може виникнути у випадках виникнення помилок при обробці даних, взаємного блокування паралельно виконуваних транзакцій або при аварійному завершенні роботи прикладної програми, що не дозволив зафіксувати транзакцію. У цих ситуаціях журнал транзакцій використовується для послідовної відміни дій (починаючи з останньої з них), які виконувалися в рамках транзакції, відкат якої відбувається.

При раптовій втраті вмісту оперативної пам'яті (м'який збій) уражаються всі виконувані в цей час транзакції, але фізичного порушення бази даних не відбувається. Узгоджений стан бази даних відновлюється СУБД після перезавантаження операційної системи по журналах транзакцій, що зберігаються в зовнішній пам'яті. Якщо транзакція перебувала в стані виконання і не була завершена, всі дії, виконані цією транзакцією, скасовуються за допомогою розглянутої раніше технології індивідуального відкоту транзакцій. У ситуації, коли транзакція успішно завершилася, але її результати не були фізично збережені в базі даних, СУБД реалізує повторне виконання цієї транзакції.

При жорсткому збої (сталися порушення в роботі апаратних засобів) деяка частина бази даних може бути зруйнована фізично. У цьому випадку журнал транзакцій не дозволяє усунути всі виниклі дефекти. Попередньо необхідно відновити базу даних по її резервній (архівної) копії, створеній в певний попередній момент часу, яка зберігається на незалежному надійному пристрої зовнішньої пам'яті. Журнал транзакцій використовується на другому етапі відновлення, коли робиться спроба повторної реалізації транзакцій, що виконувалися після створення резервної копії бази даних.

Виконання транзакцій в багатокористувацьких системах

У процесі одночасної роботи декількох користувачів з одними і тими ж об'єктами бази даних СУБД паралельно виконує безліч транзакцій. При цьому можуть виникнути наступні проблеми [12].