ТРАНЗАКЦІЇ

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

У главі 1 вказувалося, що транзакція – це логічна одиниця роботи,зазвичай включає кілька операцій над базою даних Також зазначалося, що користувач повинен мати можливість вказати системі, що окремі операції є частиною

однієї транзакції Для цього використовуються операції BEGIN TRANSACTION, COMMIT і ROLLBACK Як правило, транзакція починається при виконанні операції BEGIN TRANSACTION і припиняється при виконанні операції COMMIT АБО ROLLBACK, як в

наступному прикладі, написаному на псевдокоде

BEGIN TRANSACTION / * Переказ грошей з рахунку А на рахунок В

*/

UPDATE account A / * Списання грошей з рахунку А * /

UPDATE account В / * Зарахування грошей на рахунок В * / IF <Все виконано успішно>

THEN COMMIT / * Нормальне завершення * /

ELSE ROLLBACK / * Аварійне завершення * /

END IF

Відзначимо деякі властивості транзакцій

1 Транзакції завідомо нерозривні, тобто вони гарантують (з логічної точки зре ня), що будуть або виконані повністю, або зовсім не виполнени7, навіть якщо в системі до закінчення процесу виконання транзакції відбудеться збій

2 Транзакції гарантують збереження результатів їх виконання в тому сенсі, що якщо транзакція успішно виконала оператор COMMIT, TO всі внесені нею зміни гарантовано будуть записані в базі даних, навіть якщо пізніше в системі в якийсь момент відбудеться збій

Примітка По суті, завдяки саме цій властивості схоронності результатів транзакцій дані в базі даних є перманентними {постійними) в тому сенсі, який вказаний у розділі 1

3 Для транзакцій також гарантується ізольованість однієї транзакції від іншої

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

того, як транзакцією 77 буде успішно виконана операція COMMIT Після ви

полнения операції COMMIT зміни, які були вироблені деякої транзакцією, стають видимими для інших транзакцій Про такі зміни говорять, що вони зафіксовані, і гарантується, що вони ніколи не будуть отме нени Якщо ж, навпаки, транзакцією була виконана операція ROLLBACK, все

7 Оскільки транзакція – це виконання певного фрагмента коду, то вираз типу виконання транзакції є фактично безглуздим (якщо воно небудь і означає, це значення по суті зводиться до виконання виконання) Проте, подібний спосіб слововживання є загальноприйнятим і необхідним, і через відсутність кращого, ми самі будемо їм керуватися в даній книзі

зміни, які були внесені в базу даних в процесі виконання цієї транзакції, будуть скасовані (виконаний відкат змін) В останньому випадку кінцевий результат буде таким, як якби дана транзакція взагалі не починала виконуватися

4 При паралельному виконанні декількох транзакцій, операції яких чергуються між собою, гарантується, що процес здійснення цих операцій буде впорядковує (Serializable) Інакше кажучи, результат виконання кожної з транзакцій буде точно таким же, як при строго послідовному виконанні всіх цих же транзакцій (без чергування операцій, від початку і до кінця) в деякому довільному порядку

Розгорнуте обговорення всіх інших аспектів даної теми буде продовжено в главах 15 і 16

Джерело: Дейт К Дж, Введення в системи баз даних, 8-е видання: Пер з англ – М: Видавничий дім «Вільямс», 2005 – 1328 с: Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*