Механізм управління транзакціями
Транзакція - це послідовність операцій над БД, розглянутих СУБД як єдине ціле. Або транзакція успішно виконується, і СУБД фіксує зміни БД, вироблені цією транзакцією, у зовнішній пам'яті, або жодне з цих змін ніяк не відбивається на стані БД. Поняття транзакції необхідне для підтримки логічної цілісності БД.
Те властивість, що кожна транзакція починається при цілісному стані БД і залишає цей стан цілісним після свого завершення, робить дуже зручним використання поняття транзакції як одиниці активності користувача по відношенню до БД. При відповідному управлінні паралельно виконуються транзакціями з боку СУБД кожен з користувачів може в принципі відчувати себе єдиним користувачем СУБД.
З управлінням транзакціями в багатокористувацької СУБД пов'язані важливе поняття сериализации транзакцій. Під сериализацией паралельно виконуються транзакцій розуміється такий порядок планування їх роботи, при якому сумарний ефект суміші транзакцій еквівалентний ефекту їх деякого послідовного виконання. Зрозуміло, що якщо вдається домогтися дійсно серіального виконання суміші транзакцій, то для кожного користувача, з ініціативи якого утворена транзакція, присутність інших транзакцій буде непомітно (якщо не брати до уваги деякого уповільнення роботи в порівнянні з однокористувацький режимом).
При використанні будь-якого алгоритму сериализации можливі ситуації конфліктів між двома або більше транзакціями з доступу до об'єктів БД. В цьому випадку для підтримки сериализации необхідно виконати відкат (ліквідувати всі зміни, вироблені в БД) однієї або більше транзакцій.
Моделі транзакцій. Розглянемо дві моделі транзакцій, які використовуються в більшості комерційних СУБД: модель автоматичного виконання транзакцій і модель керованого виконання транзакцій, обидві засновані на інструкціях мови SQL - COMMIT і ROLLBACK.
Автоматичне виконання транзакцій.
У стандарті ANSI / ISO зафіксовано, що транзакція автоматично починається з виконання користувачем або програмою першої інструкції SQL. Далі відбувається послідовне виконання інструкцій до тих пір, поки транзакція не завершується одним з двох способів:
• інструкцією COMMIT, яка виконує завершення транзакції: зміни, внесені в БД, стають постійними, а нова транзакція починається відразу після інструкції COMMIT;
• інструкцією ROLLBACK, яка скасовує виконання поточної транзакції і повертає БД до стану початку транзакції, нова транзакція починається відразу після інструкції ROLLBACK.
Така модель створена на основі моделі, прийнятої в СУБД DB2.