Главная » SQL, Базы данных » ТРАНЗАКЦИИ

0

Примечание. Тему этого раздела нельзя отнести исключительно к теме реляционных систем. Тем не менее, она здесь уместна, поскольку понимание основной идеи необходимо для усвоения некоторых понятий и логичного  перехода к части 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 с.: ил. — Парал. тит. англ.

По теме:

  • Комментарии