618.43K
Категория: Базы данныхБазы данных

Транзакции

1.

Транзакции

2.

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

3.

Операции с транзакциями
Старт (BEGIN) — В рамках текущего соединения с базой
данных СУБД запоминает начало транзакции. После этого все
операции до окончания транзакции имеют специальный статус
«промежуточный», а результаты этих операций недоступны для
других транзакций до окончания текущей транзакции.
Фиксация (COMMIT) — Успешное завершение транзакции. Все
операции получают статут «выполнена», а результаты
транзакции сохраняются и становятся доступны в других
транзакциях.
Откат (ROLLBACK) — Отмена транзакции. Все операции
отменяются, а результаты операций удаляются.

4.

Свойства транзакции
ACID:
Атомарность (Atomicity)
Согласованность (Consistency)
Изолированность (Isolation)
Устойчивость (долговечность) (Durability)

5.

Атомарность (Atomicity)
Свойство атомарности выражается в том, что
транзакция должна быть выполнена в целом или не
выполнена вовсе.
Транзакция не может быть зафиксирована частично.

6.

Согласованность (Consistency)
Фиксируются только данные, не нарушающие согласованность
информации в базе данных.
В процессе выполнения транзакции (до фиксации)
согласованность не требуется.
Согласованность – это соответствие бизнес-правилам, в том
числе и тем, которые на уровне СУБД не отслеживаются
(например, в банковской системе это может быть требование,
чтобы сумма по всем операциям с некоторым счётом, как
приходных, так и расходных, должна всегда равняться текущему
балансу).

7.

Устойчивость (Durability)
В случае сбоя все зафиксированные транзакции не
«отменяются» после возвращения системы в рабочее
состояние.
То есть после успешной фиксации транзакции СУБД
гарантирует, что даже после сбоя в работе, после
восстановления данные не будут потеряны.

8.

Изолированность (Isolation)
Эффекты, связанные с явлением «состояние гонки» (Побочные
эффекты параллелизма):
Эффект потерянного обновления (Lost update )
Эффект грязного чтения (Dirty reads )
Эффект неповторяемого чтения (Non repeatable reads )
Эффект чтения фантомов (Phantom reads )
Требование «дорогое» с точки зрения производительности, поэтому в
полной мере выполняется редко. Зачастую говорят об уровнях изоляции
транзакций.

9.

Эффект потерянного обновления
(Lost update )

10.

Эффект грязного чтения (Dirty reads )

11.

Эффект неповторяемого чтения
(Non repeatable reads )

12.

Эффект чтения фантомов (Phantom
reads )

13.

Уровни изоляции
транзакций
READ UNCOMMITED
READ COMMITED
REPEATABLE READ
SERIALIZEABLE

14.

Уровни изоляции, алгоритм которых
основан на версиях строк
SNAPSHOT
READ COMMITTED SNAPSHOT

15.

Уровни изоляции транзакции
English     Русский Правила