моделі транзакцій

Моделі транзакцій. Поняття і визначення транзакції

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

Транзакція розглядається як деякий неподільне дію над базою даних, осмислене з точки зору користувача. У той же час це логічна одиниця роботи системи. Розглянемо кілька прикладів. Що може бути названо транзакцією? Ким визначається, яка послідовність операцій над базою даних складає транзакцію? Звичайно, однозначно саме розробник визначає, яка послідовність операцій становить єдине ціле, тобто транзакцію. Розробник додатків або збережених процедур визначає це виходячи зі змісту обробки даних, саме семантика сукупності операцій над базою даних, яка моделює з точки зору розробника деяку одну нерозривну роботу, і становить транзакцію. Припустимо, виділимо роботу з введення даних про що надійшли книгах, нові книги, яких не було раніше в бібліотеці. Тоді цю операцію можна розбити на дві послідовні: спочатку введення даних про книгу - це новий рядок в таблиці BOOKS, а потім введення даних про всі примірниках нової книги - це введення набору нових рядків у таблицю EXEMPLAR в кількості, яка дорівнює кількості надійшли примірників книги. Якщо ця послідовність робіт буде перервана, то наша база даних не буде відповідати реальному об'єкту, тому бажано виконувати її як єдину роботу над базою даних.

Моделі транзакцій. властивості транзакцій

  • Властивість атомарности (Atomicity) виражається в тому, що транзакція повинна бути виконана в цілому або не виконано зовсім.
  • Властивість узгодженості (Consistency) гарантує, що в міру виконання транзакцій дані переходять з одного узгодженого стану в інше - транзакція не руйнує взаємну узгодженість даних.
  • Властивість ізольованості (Isolation) означає, що конкуруючі за доступ до бази даних транзакції фізично обробляються послідовно, ізольовано один від одного, але для користувачів це виглядає так, як ніби вони виконуються паралельно.
  • Властивість довговічності (Durability) трактується наступним чином: якщо транзакція завершена успішно, то ті зміни в даних, які були нею зроблені, не можуть бути втрачені ні за яких обставин (навіть в разі подальших помилок).

Моделі транзакцій. способи завершення

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

Фіксація транзакції - це дію, що забезпечує запис на диск змін в базі даних, які були зроблені в процесі виконання транзакції.

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

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

Кожен оператор в транзакції виконує свою частину роботи, але для успішного завершення всієї роботи в цілому потрібно безумовне завершення всіх їх операторів. Групування операторів в транзакції повідомляє СУБД, що вся ця група повинна бути виконана як єдине ціле, причому таке виконання має підтримуватися автоматично.

У стандарті ANSI / ISO SQL визначені модель транзакцій і функції операторів COMMIT і ROLLBACK. Стандарт визначає, що транзакція починається з першого SQL-оператора, ініційованого користувачем або утримується в програмі, що змінює поточний стан бази даних. Усі наступні SQL-оператори складають тіло транзакції. Транзакція завершується одним з чотирьох можливих шляхів (рис. 11.1):

моделі транзакцій


Мал. 11.1. Модель транзакцій ANSI / ISO

1. оператор COMMIT означає успішне завершення транзакції; його використання робить постійними зміни, внесені в базу даних в рамках поточної транзакції;

2. оператор ROLLBACK перериває транзакцію, скасовуючи зміни, зроблені в базі даних в рамках цієї транзакції; нова транзакція починається одразу ж після використання ROLLBACK;

3. успішне завершення програми, в якій була ініційована поточна транзакція, означає успішне завершення транзакції (начебто використали оператор COMMIT);

4. помилкове завершення програми перериває транзакцію (начебто використали оператор ROLLBACK).

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

У перших версіях комерційних СУБД була реалізована модель транзакцій ANSI / ISO. Надалі в СУБД SYBASE була реалізована розширена модель транзакцій, яка включає ще ряд додаткових операцій. У моделі SYBASE використовуються наступні чотири оператори: