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

Лекція 12. Транзакції. Паралельне виконання транзакцій.

Визначення транзакції. Виконання. Відкат. Адміністрування.Журналізація. Властивості транзакції. Види транзакцій. Управління транзакціями в мовах програмування. Керування паралельністю. Проблеми паралелізму. Проблема загубленого відновлення. Проблема залежності від нефіксованих результатів. Проблема неузгодженої обробки. Блокування. Рівні ізолювання транзакцій. Використання протоколу двох фазного блокування для усунення проблем.

12.1. Визначення транзакції. Виконання. Відкат.

Транзакція – це неподільна, з точки зору СУБД, послідовність операцій по маніпулюванню даними.

Транзакція є логічною одиницею роботи, виконуваної в базі даних. Вона може бути представлена окремою програмою, бути частиною алгоритму програми або навіть окремою командою (наприклад, командою INSERT або UPDATE мови SQL) і включати довільну кількість операцій, виконуваних у базі даних.

Будь-яка транзакція завершується одним із двох можливих способів.

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

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

Зафіксована транзакція не може бути скасована. Якщо виявиться, що зафіксована транзакція була помилковою, буде потрібно виконати іншу транзакцію, що скасовує дії, виконані першою транзакцією. Інколи таку транзакцію називають компенсуючею.

Слід зазначити, що скасована транзакція може бути ще раз запущена пізніше і, у залежності від причин попередньої невдачі, цілком успішно завершена і зафіксована в базі даних.

Таким чином підсистема транзакцій є механізмом забезпечення цілісності БД.

БД знаходиться в цілісному(погодженому) стані, якщо виконані всі обмеження цілісності, визначені для неї.

12.2. Властивості транзакції. Види транзакцій.

Кожна з транзакцій повинна Існують володіти наступними властивостями:

  • Атомарність. Це властивість типу "всі або нічого". Будь-яка транзакція являє собою неподільну одиницю роботи, що може бути або виконана вся цілком, або не виконана зовсім.

  • Погодженість. Кожна транзакція повинна переводити базу даних з одного погодженого стану в інший погоджений стан.

  • Ізольованість. Усі транзакції виконуються незалежно одна від іншої. Іншими словами, проміжні результати незавершеної транзакції не повинні бути доступні іншими транзакціям.

  • Тривалість. Результати успішно завершеної (зафіксованої) транзакції повинні зберігатися в базі даних постійно і не повинні бути загублені в результаті наступних можливих збоїв.

Загалом, транзакції поділяються на пишучі та читаючі.

12.3. Блокування. Рівні ізолювання транзакцій.

Класифікація обмежень цілісності БД

По способу реалізації

Декларативні

Виконується засобами мови DDL(мови визначення даних)-це обмеження домена,атрибута, цілісності сутності(первинні ключі), посилальна цілісність (зовнішні ключі)

Процедурні

Полягає в вирішенні задачі підтримки цілісності засобами тригерів та процедур (не всі обмеження можна реалізувати декларативно).

По часу перевірки

З безпосередньою перевіркою

Перевірка унікальності ключа, обмеження домена чи атрибута.

З відкладеною перевіркою

Виконуються в момент фіксації транзакції.

По області дії

Обмеження домена

Обмеження атрибута

Обмеження кортежа

Обмеження відношення

Обмеження БД

Правило цілісності стосується кількох відношень (корпоративні обмеження)

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]