Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТППС / ТППС-лаб-2012-укр.docx
Скачиваний:
49
Добавлен:
05.06.2015
Размер:
1.11 Mб
Скачать

Проектування транзакцій

Транзакція - це логічна одиниця роботи, яка складається з одного або більше операторів SQL, виконуваних користувачем. Транзакція також є одиницею виміру несуперечності бази даних - стан бази даних після завершення транзакції несуперечливий. Для забезпечення цієї несуперечності використовується програма менеджера транзакцій, яка служить двом цілям: відновленню бази даних (database recovery) і керуванню паралельним виконанням операцій (concurrency control).

Згідно зі стандартами SQL транзакція починається з першого, що виконується SQL-оператора (у деяких системах потрібен явний оператор початку транзакції на зразок begin transaction). Транзакція завершується операторами commit або rollback. Оператор commit записує зміни в базу даних як постійні. Оператор rollback стирає будь-які зміни, зроблені транзакцією.

Транзакція відрізняється властивістю атомарності (atomic) - результат усіх SQL-операторів, що утримуються в транзакції, або повністю підтверджується (commit), або відкидається (rollback). Користувач визначає тривалість (довжину) транзакції. Залежно від характеру бізнес-вимог, області додатка, стилю взаємодій користувача з комп'ютером транзакція може бути зовсім короткою, що складається з одного SQL-оператора, або містити послідовність SQL-операторів.

Песимістичне керування паралельністю

Архітектура традиційних СУБД - ОСУБД становлять тут помітне виключення - орієнтована на короткі транзакції. Ці системи працюють відповідно до алгоритму песимістичного керування паралельністю (pessimistic concurrency control}. При обробці транзакцією кожного постійного об'єкта вона запитує блокування (lock). Існує чотири типи блокувань по об'єктах.

1.  Привілейоване блокування (exclusive lock) (по запису) – інші транзакції повинні очікувати, поки транзакція, що утримує подібне блокування, завершиться і звільнить блокування.

2.  Блокування відновлення (update lock) (no можливому запису) - інші транзакції можуть читати об'єкт, однак, транзакції, що утримує блокування, гарантується можливість виконати відновлення в привілейованому режимі, як тільки в неї виникне в цьому потреба.

3.  Блокування читання (read lock) (з поділом) - інші транзакції можуть читати і, можливо, одержати блокування відновлення по об'єкту.

4.  Відсутність блокування (nо lock) - інші транзакції можуть обновляти об'єкт у будь-який момент; підходить тільки для додатків, що допускають "чорнове читання", - тобто транзакція зараховує дані, які можуть бути модифіковані або навіть вилучені (іншою транзакцією) до завершення транзакції.

Точка збереження

Точка збереження (savepoint) - це оператор програми, який ділить довгу транзакцію на більш короткі частини. Іменована точка збереження міститься в стратегічно важливих пунктах програми. Згодом програміст має можливість здійснити відкат виконаної роботи до точки збереження, а не до початку транзакції.

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

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

Соседние файлы в папке ТППС