Page 84 - 4475
P. 84
вводиться поняття “відкату” (rollback), якщо транзакцію не
вдається повністю завершити, всі виконані операції буде
відмінено і система повернеться в вихідний стан.
Узгодженість — система знаходиться в узгодженому
стані до і після транзакції. Під час виконання транзакції
можуть відбуватися неузгоджені дії, однак вони не повинні
бути видимі і не мають впливати на кінцевий стан системи.
Ізоляція — під час виконання транзакції паралельні
транзакції не мають впливати на її результат.
Надійність — незалежно від проблем на нижніх
рівнях, зміни, внесені успішно проведеною транзакцією,
повинні залишатися збереженими після повернення
системи в роботу. Іншими словами, якщо користувач
отримав підтвердження від системи, що транзакція
виконана, він має бути впевнений, що зроблені зміни не
будуть відмінені в результаті якогось збою.
Реалізація транзакцій в MySQL. В MySQL
транзакцію відкриває оператор: "START TRANSACTION;".
Після правильного виконання всіх запитів транзакцію
можна або завершити, внісши всі зміни в базу даних -
"COMMIT;", або відкотити, повернувши систему в
початковий стан - "ROLLBACK".
Слід відзначити такі нюанси, які слід враховувати
при роботі з MySQL.
1. В MySQL є декілька типів таблиць. Це ISAM,
HEAP, MyISAM, InnoDB, BDB тощо. Транзакційний
механізм підтримують тільки InnoDB і BDB. Тому всі
таблиці, з якими ви будете працювати через транзакції, слід
переконвертувати в ці типи.
2. За замовчуванням MySQL працює в режимі
autocommit. Це означає, що результати виконання будь-
якого SQL-оператора, що змінює дані, будуть відразу
зберігатися. autocommit можна відключити командою SET
AUTOCOMMIT=0. При відключеному режимі autocommit
кожну транзакцію треба явно завершувати операторами
79