Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Авт_ПМП / Metod_BD.doc
Скачиваний:
31
Добавлен:
05.02.2016
Размер:
574.98 Кб
Скачать

Використання транзакцій

Стандарт ISO визначає модель транзакцій, яка використовує оператори COMMIT і ROLLBACK. Більшість (але не всі) комерційних реалізацій мови SQL підтримують цю модель, яка вперше була реалізована в СУБД DB2 корпорації IBM. Транзакцією називається логічна одиниця роботи, що складається з одного або більше SQL-операторів, яка обробляється системою як єдина і неподільна дія. В стандарті вказується, що в мові SQL транзакція автоматично запускається любим ініціалізуючого транзакціюSQL-оператором (наприклад, SELECT, INSERT, UPDATE). Зміни, що внесені в базу даних в ході виконання даної транзакції, не будуть видимі для любих інших транзакцій, що виконуються паралельно, до тих пір поки ця транзакція не буде завершена. Завершення транзакції може бути виконано одним з наступних способів:

  • Ввод оператора COMMIT означає успішне завершення транзакції. Після його виконання внесені в базу зміни набувають постійного характеру. Після обробки оператора COMMIT ввод любого ініціалізуючого транзакцію оператора автоматично викличе запуск нової транзакції.

  • Ввод оператора ROLLBACK означає відмову від завершення транзакції, в результаті чого виконується відкат всіх змін в базі даних, що відбулись під час виконання цієї транзакції. Після обробки оператора ROLLBACK ввод любого ініціалізуючого транзакцію оператора автоматично викличе запуск нової транзакції.

  • При внесенні SQL-оператора в текст програми (мається на увазі вбудований SQL) успішне завершення її роботи автоматично викличе завершення останньої запущеної програмою транзакції навіть у випадку відсутності оператора COMMIT.

  • При внесенні SQL-оператора в текст програми, що аварійно завершила свою роботу автоматично викличе відкат останньої транзакції.

В мові SQL заборонено використовувати вкладені транзакції. За допомогою оператора SET TRANSACTION користувачі мають змогу налаштовувати процедуру обробки транзакій. Основний формат цього оператора має вид:

SET TRANSACTION

[READ ONLY | READ WRITE] |

[ISOLATION LEVEL READ UNCOMMITTED | READ COMMITTED |

REPEATABLE READ | SERIALIZED]

Кваліфікатори READ ONLY і READ WRITE вказують, що в транзакціях допускається лише виконання операцій читання або читання і записування відповідно. За змовчуванням використовується кваліфікатор READ WRITE (якщо тільки не вибрано рівень ізоляції READ UNCOMMITTED). Показник рівня ізоляції визначає степінь взаємодії з іншими транзакціями.

Властивості транзакцій. Існують деякі властивості, які властиві кожній транзакції. Нижче наведено чотири основних властивостей.

  • Атомарність. Люба транзакція представляє собою неподільну одиницю роботи, яка виконується вся цілком або не виконується зовсім.

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

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

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

Соседние файлы в папке Авт_ПМП