Учебники

7) Управление транзакциями СУБД

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

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

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

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

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

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

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

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

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

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

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

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

Различные состояния транзакции базы данных перечислены ниже

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

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

  1. Как только транзакция сообщает о выполнении, она становится активной. Он может выполнить операцию чтения или записи.
  2. После завершения операций READ и WRITE транзакции становятся частично зафиксированными.
  3. Далее, некоторые протоколы восстановления должны гарантировать, что сбой системы не приведет к невозможности фиксировать изменения в транзакции навсегда. Если эта проверка успешна, транзакция фиксируется и переходит в зафиксированное состояние.
  4. Если проверка не пройдена, транзакция переходит в состояние «Сбой».
  5. Если транзакция прерывается, когда она находится в активном состоянии, она переходит в состояние сбоя. Необходимо откатить транзакцию, чтобы отменить влияние операций записи на базу данных.
  6. Прекращенное состояние относится к транзакции, покидающей систему.
  • Атомарность: транзакция – это единица операции. Вы либо выполняете его полностью, либо не выполняете вообще. Не может быть частичного исполнения.
  • Согласованность: после выполнения транзакции она должна перейти из одного согласованного состояния в другое.
  • Изоляция: транзакция должна выполняться изолированно от других транзакций (без блокировок). Во время одновременного выполнения транзакции промежуточные результаты транзакций, выполняемые одновременно выполняемыми транзакциями, не должны быть доступны друг другу. (Уровень 0,1,2,3)
  • Долговечность: · После успешного завершения транзакции изменения в базе данных должны сохраняться. Даже в случае системных сбоев.

Пример КИСЛОТЫ

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 или наоборот. Независимо от порядка, результат должен быть таким, как если бы транзакции происходили последовательно одна за другой.

Типы сделок

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

  • Нераспределенный или распределенный
  • Компенсирующие транзакции
  • Сроки транзакций
  • Онлайн против партии

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

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

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

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

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

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

пример

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

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

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

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

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

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

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

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

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

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

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

  • конфликт
  • Посмотреть

Резюме:

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