logo
Базы данных_учпос_Любицкий Ю

5.1. Транзакции

Транзакцией называется последовательность элементарных операций, выполняемых над базой данных и переводящих базу данных из одного непротиворечивого состояния в другое. Транзакция – это логическая единица работы с базой данных [ 2 ].

Рассмотрим пример транзакции. Предположим, в базе данных хранятся сведения о наличии товаров на складах и в магазинах торговой фирмы. При перемещении некоторого товара со склада в магазин в базе данных необходимо выполнить несколько изменений: а) уменьшить количество единиц товара, хранящегося на складе, на заданную величину; б) соответственно увеличить количество единиц данного товара в магазине. Следовательно, рассматриваемая транзакция представляет собой не отдельную операцию, реализуемую СУБД, а скорее, согласование нескольких таких операций.

При успешном завершении транзакции полученные результаты сохраняются во внешней памяти (фиксация транзакций).

Если во время выполнения транзакции (до ее завершения) произойдет сбой, база данных останется в несогласованном состоянии. Это является следствием того, что в промежуточных точках выполнения транзакции целостность базы данных нарушается (товар со склада уже отправлен, а в магазин он еще не поступил). Для восстановления базы данных (ее возвращения в исходное состояние), действия, уже выполненные такими транзакциями, отменяются (откат транзакций).

Транзакции должны обладать следующими свойствами:

  1. атомарности (Atomicity) – транзакция должна выполняться полностью или не выполняться совсем;

  2. согласованности (Consistency) – транзакция переводит базу данных из одного согласованного состояния в другое с возможным нарушением согласованности в промежуточных точках транзакции;

  3. изолированности (Isolation) – транзакции должны выполняться автономно друг от друга, при этом изменения, вносимые в базу данных некоторой транзакцией, до ее фиксации должны быть скрыты от других транзакций;

  4. долговечности (Durability) – после завершения и фиксации транзакции, все изменения, вызванные этой транзакцией в базе данных, сохраняются даже при возникновении сбоев в системе.

Транзакции, удовлетворяющие перечисленным требованиям, называют ACID-транзакциями.