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

Содержание:

Anonim

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

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

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

В этом руководстве вы узнаете:

  • Факты о транзакциях с базой данных
  • Зачем вам нужен параллелизм в транзакциях?
  • Состояния транзакций
  • Что такое свойства ACID?
  • Типы сделок
  • Что такое расписание?

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

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

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

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

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

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

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

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

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

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

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

Что такое свойства ACID?

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

  • Атомарность: транзакция - это единая операция. Вы либо выполняете его полностью, либо не выполняете совсем. Не может быть частичного исполнения.
  • Согласованность: после выполнения транзакции она должна перейти из одного согласованного состояния в другое.
  • Изоляция: транзакция должна выполняться изолированно от других транзакций (без блокировок). Во время одновременного выполнения транзакции промежуточные результаты транзакций из одновременно выполняемых транзакций не должны быть доступны друг другу. (Уровень 0,1,2,3)
  • Долговечность: · После успешного завершения транзакции изменения в базе данных должны сохраняться. Даже в случае сбоев системы.

Свойство ACID в СУБД с примером:

Ниже приведен пример свойства ACID в СУБД:

Transaction 1: Begin X=X+50, Y = Y-50 ENDTransaction 2: Begin X=1.1*X, Y=1.1*Y END

Транзакция 1 переводит 50 долларов США со счета X на счет Y.

Транзакция 2 - это кредитование каждого счета с выплатой процентов в размере 10%.

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

Типы сделок

На основе областей применения

  • Нераспределенные vs. распределенные
  • Компенсационные транзакции
  • Время транзакций
  • Он-лайн или партия

На основе действий

  • Два шага
  • Ограниченный
  • Модель действия

На основе структуры

  • Плоские или простые транзакции: они состоят из последовательности примитивных операций, выполняемых между начальными и конечными операциями.
  • Вложенные транзакции: транзакция, содержащая другие транзакции.
  • Рабочий процесс

Что такое расписание?

Расписание - это процесс, создающий единую группу из нескольких параллельных транзакций и выполняющий их одну за другой. Он должен сохранять порядок, в котором инструкции появляются в каждой транзакции. Если две транзакции выполняются одновременно, результат одной транзакции может повлиять на вывод другой.

Пример

Initial Product Quantity is 10Transaction 1: Update Product Quantity to 50Transaction 2: Read Product Quantity

Если Транзакция 2 выполняется до Транзакции 1, будет считана устаревшая информация о количестве товара. Следовательно, графики необходимы.

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

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

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

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

Эквивалентность представления возникает, когда транзакция в обоих расписаниях выполняет аналогичное действие. Например, одна транзакция вставляет сведения о продукте в таблицу продуктов, а другая транзакция вставляет сведения о продукте в архивную таблицу. Транзакция такая же, но таблицы разные.

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

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

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

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

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

Резюме:

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