Управление транзакциями в СУБД: что такое ACID-свойства?
Что такое транзакция базы данных?
A Транзакция базы данных — это логическая единица обработки в СУБД, которая влечет за собой одну или несколько операций доступа к базе данных. Короче говоря, транзакции базы данных представляют собой реальные события любого предприятия.
Все типы операций доступа к базе данных, которые проводятся между операторами начала и завершения транзакции, рассматриваются в СУБД как одна логическая транзакция. Во время транзакции база данных противоречива. Только после фиксации базы данных ее состояние меняется с одного согласованного состояния на другое.

Факты о транзакциях базы данных
- Транзакция — это программная единица, выполнение которой может изменить или не изменить содержимое базы данных.
- Концепция транзакции в СУБД реализована как единое целое.
- Если операции с базой данных не обновляют базу данных, а только извлекают данные, этот тип транзакции называется транзакцией только для чтения.
- Успешная транзакция может перевести базу данных из одного КОНСИСТЕНТНОГО СОСТОЯНИЯ в другое.
- Транзакции СУБД должны быть атомарными, согласованными, изолированными и долговечными.
- Если база данных находилась в несогласованном состоянии до транзакции, она останется в несогласованном состоянии и после транзакции.
Зачем вам нужен параллелизм в транзакциях?
База данных — это общий ресурс, к которому осуществляется доступ. Он используется многими пользователями и процессами одновременно. Например, банковская система, системы бронирования железнодорожных и авиационных систем, мониторинг фондового рынка, инвентаризация супермаркетов, кассы и т. д.
Отсутствие управления одновременным доступом может создать такие проблемы, как:
- Аппаратный сбой и сбой системы
- Одновременное выполнение одной и той же транзакции, тупикили низкая производительность
Состояния транзакций
Ниже перечислены различные состояния концепции транзакции в СУБД:
Область | Типы транзакций |
---|---|
Активное состояние | Транзакция переходит в активное состояние, когда начинается процесс выполнения. В этом состоянии могут выполняться операции чтения или записи. |
Частично совершено | Транзакция переходит в состояние частичной фиксации после завершения транзакции. |
Выполненное состояние | Когда транзакция фиксируется в состоянии, она уже успешно завершила свое выполнение. При этом все его изменения постоянно записываются в базу данных. |
Неудачное состояние | Транзакция считается неудачной, если какая-либо из проверок не пройдена или если транзакция прерывается, пока она находится в активном состоянии. |
Прекращенное состояние | Состояние транзакции достигает состояния завершения, когда определенные транзакции, покидающие систему, не могут быть перезапущены. |
Давайте изучим диаграмма перехода состояний это подчеркивает, как транзакция перемещается между этими различными состояниями.
- Как только транзакция сообщает о выполнении, она становится активной. Он может выполнить операцию ЧТЕНИЕ или ЗАПИСЬ.
- После завершения операций READ и WRITE транзакции переходят в состояние частичной фиксации.
- Кроме того, некоторые протоколы восстановления должны гарантировать, что сбой системы не приведет к невозможности постоянной записи изменений в транзакции. Если эта проверка успешна, транзакция фиксируется и переходит в состояние фиксации.
- Если проверка не удалась, транзакция переходит в состояние Failed.
- Если транзакция прерывается, пока она находится в активном состоянии, она переходит в состояние сбоя. Транзакцию следует откатить, чтобы отменить влияние ее операций записи на базу данных.
- Завершенное состояние относится к транзакции, покидающей систему.
Что такое КИСЛОТНЫЕ свойства?
КИСЛОТНЫЕ Свойства используются для поддержания целостности базы данных во время обработки транзакций. ACID в СУБД означает Aтомичность, Cпостоянство, Iизоляция, и Dнадежность.
- Atomлед: Транзакция представляет собой единую единицу операции. Вы либо выполняете его полностью, либо не выполняете вообще. Частичного исполнения быть не может.
- Консистенция: После выполнения транзакции она должна перейти из одного согласованного состояния в другое.
- изоляция: Транзакция должна выполняться изолированно от других транзакций (без блокировок). Во время одновременного выполнения транзакций промежуточные результаты транзакций из одновременно выполняемых транзакций не должны быть доступны друг другу. (Уровень 0,1,2,3)
- Прочность:· После успешного завершения транзакции изменения в базе данных должны сохраниться. Даже в случае системных сбоев.
Свойство ACID в СУБД на примере
Ниже приведен пример свойства ACID в СУБД:
Transaction 1: Begin X=X+50, Y = Y-50 END Transaction 2: Begin X=1.1*X, Y=1.1*Y END
Транзакция 1 переводит 50 долларов США со счета X на счет Y.
Транзакция 2 кредитует каждый счет с выплатой процентов в размере 10%.
Если обе транзакции отправляются вместе, нет никакой гарантии, что транзакция 1 будет выполнена раньше транзакции 2 или наоборот. Независимо от порядка результат должен быть таким, как если бы транзакции происходили последовательно одна за другой.
Типы транзакций
В зависимости от области применения
- Нераспределенный и распределенный
- Компенсационные транзакции
- Сроки транзакций
- Онлайн или пакетная обработка
На основе действий
- Два шага
- ограниченный
- Модель действия
На основе структуры
- Плоские или простые транзакции: они состоят из последовательности примитивных операций, выполняемых между начальной и конечной операциями.
- Вложенные транзакции: транзакция, которая содержит другие транзакции.
- Рабочий процесс
Что такое расписание?
Расписание — это процесс, создающий одну группу из нескольких параллельных транзакций и выполняющий их одну за другой. Он должен сохранять порядок, в котором инструкции появляются в каждой транзакции. Если две транзакции выполняются одновременно, результат одной транзакции может повлиять на результат другой.
Пример
Initial Product Quantity is 10 Transaction 1: Update Product Quantity to 50 Transaction 2: Read Product Quantity
Если Транзакция 2 выполняется раньше Транзакции 1, будет считана устаревшая информация о количестве товара. Следовательно, графики необходимы.
Параллельное выполнение в базе данных неизбежно. Однако параллельное выполнение разрешено, если между одновременно выполняемыми транзакциями существует отношение эквивалентности. Эта эквивалентность бывает 3-х типов.
ЭКВИВАЛЕНТНОСТЬ РЕЗУЛЬТАТА:
Если два расписания после выполнения отображают один и тот же результат, это называется графиком, эквивалентным результату. Они могут предлагать одинаковый результат для одного значения и разные результаты для другого набора значений. Например, одна транзакция обновляет количество продукта, а другая обновляет сведения о клиенте.
Просмотр эквивалентности
Просмотр эквивалентности происходит, когда транзакция в обоих расписаниях выполняет одинаковое действие. Например, одна транзакция вставляет сведения о продукте в таблицу продуктов, а другая транзакция вставляет сведения о продукте в таблицу архива. Транзакция та же, но таблицы разные.
КОНФЛИКТ Эквивалентность
В этом случае две транзакции обновляют/просматривают один и тот же набор данных. Между транзакциями возникает конфликт, поскольку порядок выполнения повлияет на результат.
Что такое сериализуемость?
Сериализуемость — это процесс поиска параллельного расписания, выходные данные которого равны последовательному расписанию, в котором транзакции выполняются одна за другой. В зависимости от типа расписаний существует два типа сериализуемости:
- конфликт
- Просмотр
Резюме
- Управление транзакциями — это логическая единица обработки в СУБД, которая влечет за собой одну или несколько операций доступа к базе данных.
- Транзакция — это программная единица, выполнение которой может изменить или не изменить содержимое базы данных.
- Отсутствие управления одновременным доступом может привести к таким проблемам, как сбой оборудования и сбой системы.
- Активное, частично зафиксированное, зафиксированное, неудачное и прекращенное — важные состояния транзакции.
- Полная форма свойств ACID в СУБД is Atomледяность, последовательность, изоляция и долговечность
- Три типа транзакций СУБД: «Базовые по областям применения», «Действия» и «Структура».
- Расписание — это процесс, создающий одну группу из нескольких параллельных транзакций и выполняющий их одну за другой.
- Сериализуемость — это процесс поиска параллельного расписания, результат которого равен последовательному расписанию, в котором транзакции выполняются одна за другой.