Управление транзакциями в СУБД: что такое ACID-свойства?

Что такое транзакция базы данных?

A Транзакция базы данных — это логическая единица обработки в СУБД, котораяtails одна или несколько операций доступа к базе данных. Короче говоря, транзакции базы данных представляют собой реальные события любого предприятия.

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

Транзакция базы данных
Транзакция базы данных

Факты о транзакциях базы данных

  • Транзакция — это программная единица, выполнение которой может изменить или не изменить содержимое базы данных.
  • Концепция транзакции в СУБД реализована как единое целое.
  • Если операции с базой данных не обновляют базу данных, а только извлекают данные, этот тип транзакции называется транзакцией только для чтения.
  • Успешная транзакция может перевести базу данных из одного КОНСИСТЕНТНОГО СОСТОЯНИЯ в другое.
  • Транзакции СУБД должны быть atomIC, последовательный, изолированный и прочный
  • Если база данных находилась в несогласованном состоянии до транзакции, она останется в несогласованном состоянии и после транзакции.

Зачем вам нужен параллелизм в транзакциях?

База данных — это общий ресурс, к которому осуществляется доступ. Он используется многими пользователями и процессами одновременно. Например, банковская система, системы бронирования железнодорожных и авиационных систем, мониторинг фондового рынка, инвентаризация супермаркетов, кассы и т. д.

Отсутствие управления одновременным доступом может создать такие проблемы, как:

  • Аппаратный сбой и сбой системы
  • Одновременное выполнение одной и той же транзакции, deadlockили низкая производительность

Состояния транзакций

Ниже перечислены различные состояния концепции транзакции в СУБД:

Область Типы транзакций
Активное состояние Транзакция переходит в активное состояние, когда начинается процесс выполнения. В этом состоянии могут выполняться операции чтения или записи.
Частично совершено Транзакция переходит в состояние частичной фиксации после завершения транзакции.
Выполненное состояние Когда транзакция фиксируется в состоянии, она уже успешно завершила свое выполнение. При этом все его изменения постоянно записываются в базу данных.
Неудачное состояние Транзакция считается неудачной, если какая-либо из проверок не пройдена или если транзакция прерывается, пока она находится в активном состоянии.
Прекращенное состояние Состояние транзакции достигает состояния завершения, когда определенные транзакции, покидающие систему, не могут быть перезапущены.
Диаграмма перехода состояний
Диаграмма перехода состояний для транзакции базы данных

Давайте изучим диаграмма перехода состояний это подчеркивает, как транзакция перемещается между этими различными состояниями.

  1. Как только транзакция сообщает о выполнении, она становится активной. Он может выполнить операцию ЧТЕНИЕ или ЗАПИСЬ.
  2. После завершения операций READ и WRITE транзакции переходят в состояние частичной фиксации.
  3. Кроме того, некоторые протоколы восстановления должны гарантировать, что сбой системы не приведет к невозможности постоянной записи изменений в транзакции. Если эта проверка успешна, транзакция фиксируется и переходит в состояние фиксации.
  4. Если проверка не удалась, транзакция переходит в состояние Failed.
  5. Если транзакция прерывается, пока она находится в активном состоянии, она переходит в состояние сбоя. Транзакцию следует откатить, чтобы отменить влияние ее операций записи на базу данных.
  6. Завершенное состояние относится к транзакции, покидающей систему.

Что такое КИСЛОТНЫЕ свойства?

КИСЛОТНЫЕ Свойства используются для поддержания целостности базы данных во время обработки транзакций. ACID в СУБД означает Aтомичность, Cпостоянство, Iизоляция, и Dнадежность.

  • Atomлед: Транзакция представляет собой единую единицу операции. Вы либо выполняете его полностью, либо не выполняете вообще. Частичного исполнения быть не может.
  • Консистенция: После выполнения транзакции она должна перейти из одного согласованного состояния в другое.
  • изоляция: Транзакция должна выполняться изолированно от других транзакций (без блокировок). Во время одновременного выполнения транзакции промежуточная транзакция возникает в результате одновременного выполнения.neoобычно выполняемые транзакции не должны быть доступны друг другу. (Уровень 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, будет считана устаревшая информация о количестве товара. Следовательно, графики необходимы.

Параллельное выполнение в базе данных неизбежно. Но параллельное выполнение разрешено, когда между одновременно выполняемыми операциями существует отношение эквивалентности.neoобычно выполняет транзакции. Эта эквивалентность имеет 3 типа.

ЭКВИВАЛЕНТНОСТЬ РЕЗУЛЬТАТА:

Если два расписания после выполнения отображают один и тот же результат, это называется графиком, эквивалентным результату. Они могут предлагать одинаковый результат для одного значения и разные результаты для другого набора значений. Например, одна транзакция обновляет количество продукта, а другая — информацию о клиенте.tails.

Просмотр эквивалентности

Просмотр эквивалентности происходит, когда транзакция в обоих расписаниях выполняет одинаковое действие. Пример: одна транзакция вставляет продукт details в таблицу продуктов, в то время как другая транзакция вставляет продуктtails в архивной таблице. Транзакция та же, но таблицы разные.

КОНФЛИКТ Эквивалентность

В этом случае две транзакции обновляют/просматривают один и тот же набор данных. Между транзакциями возникает конфликт, поскольку порядок выполнения повлияет на результат.

Что такое сериализуемость?

Сериализуемость — это процесс поиска параллельного расписания, выходные данные которого равны последовательному расписанию, в котором транзакции выполняются одна за другой. В зависимости от типа расписаний существует два типа сериализуемости:

  • конфликт
  • Вид

Итоги

  • Управление транзакциями — это логическая единица обработки в СУБД, котораяtails одна или несколько операций доступа к базе данных
  • Транзакция — это программная единица, выполнение которой может изменить или не изменить содержимое базы данных.
  • Отсутствие управления одновременным доступом может привести к таким проблемам, как сбой оборудования и сбой системы.
  • Активное, частично зафиксированное, зафиксированное, неудачное и прекращенное — важные состояния транзакции.
  • Полная форма свойств ACID в СУБД is Atomледяность, последовательность, изоляция и долговечность
  • Три типа транзакций СУБД: «Базовые по областям применения», «Действия» и «Структура».
  • Расписание — это процесс, создающий одну группу из нескольких параллельных транзакций и выполняющий их одну за другой.
  • Сериализуемость — это процесс поиска параллельного расписания, результат которого равен последовательному расписанию, в котором транзакции выполняются одна за другой.