БАЗИ ДАНИХ. МОВИ ЗАПИТІВ, УПРАВЛІННЯ ТРАНЗАКЦІЯМИ,

РОЗПОДІЛЕНА ОБРОБКА ДАНИХ

 

2.2 Порядок виконання операцій транзакції

 

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

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

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

Порядок виконання операцій транзакції прийнято позначати за допомогою діаграми переходів. Приклад такої діаграми наведено на рис. 2.1.

 

 

            

 

Рисунок 2.1 – Діаграма переходу транзакції

 

На діаграмі, окрім очевидних станів ACTIVE, COMMITTED і ABORTED присутні стани PARTIALLY COMMITTED і FAILED. Стан PARTIALLY COMMITTED виникає після виконання останнього оператора транзакції. В цей момент може бути виявлено, що в результаті виконання транзакції порушені правила впорядкування або обмеження цілісності, тому транзакцію необхідно завершити аварійно. Ще один варіант розвитку подій полягає в тому, що в системі відбувається відмова, і всі дані, оновлені в транзакції, неможливо успішно записати у зовнішню пам’ять. В подібних випадках транзакція повинна перейти у стан FAILED і завершитись аварійно. Якщо ж транзакція виконана успішно, то всі результати оновлення можуть бути успішно записані у зовнішню пам’ять і транзакція може перейти в стан COMMITTED.

 

 

попередня     ЗМІСТ    наступна

 

 

Пєтух А.М., Романюк О.В., Романюк О.Н.

ВНТУ 2016