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

Какво е транзакция с база данни?

A Транзакция с база данни е логическа единица за обработка в СУБД, която включва една или повече операции за достъп до база данни. С две думи транзакциите в базата данни представляват събития от реалния свят на всяко предприятие.

Всички типове операции за достъп до базата данни, които се държат между началните и крайните оператори на транзакция, се считат за единична логическа транзакция в СУБД. По време на транзакцията базата данни е непоследователна. Само след като базата данни е ангажирана, състоянието се променя от едно последователно състояние в друго.

Транзакция с база данни
Транзакция с база данни

Факти за транзакциите с бази данни

  • Транзакцията е програмна единица, чието изпълнение може или не може да промени съдържанието на база данни.
  • Концепцията за транзакция в СУБД се изпълнява като единична единица.
  • Ако операциите на базата данни не актуализират базата данни, а само извличат данни, този тип транзакция се нарича транзакция само за четене.
  • Една успешна транзакция може да промени базата данни от едно КОНЗИСЕНТНО СЪСТОЯНИЕ в друго
  • СУБД транзакциите трябва да бъдат атомарни, последователни, изолирани и трайни
  • Ако базата данни е била в несъгласувано състояние преди транзакция, тя ще остане в несъгласувано състояние след транзакцията.

Защо се нуждаете от паралелност в транзакциите?

Базата данни е споделен ресурс, до който има достъп. Използва се от много потребители и процеси едновременно. Например банковата система, системите за железопътни и въздушни резервации, мониторинг на фондовия пазар, инвентаризация на супермаркети и каси и др.

Неуправлението на едновременен достъп може да създаде проблеми като:

  • Хардуерна повреда и системни сривове
  • Едновременно изпълнение на една и съща транзакция, задънена улица, или бавна производителност

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

Различните състояния на концепция за транзакция в СУБД са изброени по-долу:

Област Видове транзакции
Активно състояние Транзакцията влиза в активно състояние, когато процесът на изпълнение започне. По време на това състояние могат да се извършват операции за четене или запис.
Частично ангажиран Транзакцията преминава в частично ангажирано състояние след края на транзакцията.
Ангажирана държава Когато транзакцията е ангажирана в състояние, тя вече е завършила успешно изпълнението си. Освен това всички негови промени се записват постоянно в базата данни.
Неуспешна държава Една транзакция се счита за неуспешна, когато някоя от проверките е неуспешна или ако транзакцията е прекъсната, докато е в активно състояние.
Прекратено състояние Състоянието на транзакцията достига прекратено състояние, когато определени транзакции, които напускат системата, не могат да бъдат рестартирани.
Диаграма на прехода на състоянието
Диаграма на прехода на състоянието за транзакция на база данни

Нека изучим а диаграма на прехода на състоянието който подчертава как транзакцията се движи между тези различни състояния.

  1. След като дадена транзакция заяви изпълнение, тя става активна. Може да издава операция READ или WRITE.
  2. След като операциите READ и WRITE завършат, транзакциите стават частично ангажирани.
  3. На следващо място, някои протоколи за възстановяване трябва да гарантират, че повреда на системата няма да доведе до невъзможност за постоянно записване на промените в транзакцията. Ако тази проверка е успешна, транзакцията се ангажира и влиза в ангажираното състояние.
  4. Ако проверката е неуспешна, транзакцията преминава в състояние Неуспешно.
  5. Ако транзакцията бъде прекъсната, докато е в активно състояние, тя преминава в неуспешно състояние. Транзакцията трябва да бъде върната, за да се отмени ефектът от нейните операции за запис върху базата данни.
  6. Прекратеното състояние се отнася до транзакцията, напускаща системата.

Какво представляват свойствата на ACID?

Свойства на ACID се използват за поддържане на целостта на базата данни по време на обработка на транзакция. ACID в СУБД означава Aтомичност, Cнастойчивост, Iуспокоение и Dустойчивост.

  • Atomicity: Транзакцията е единична единица операция. Или го изпълнявате изцяло, или изобщо не го изпълнявате. Не може да има частично изпълнение.
  • Съвместимост: След като транзакцията бъде изпълнена, тя трябва да премине от едно последователно състояние в друго.
  • Изолация: Транзакцията трябва да се изпълнява изолирано от други транзакции (без заключвания). По време на едновременното изпълнение на транзакция, резултатите от междинни транзакции от едновременно изпълнени транзакции не трябва да се предоставят един на друг. (Ниво 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 или обратното. Независимо от реда, резултатът трябва да бъде така, сякаш транзакциите се извършват последователно една след друга.

Видове транзакции

Въз основа на областите на приложение

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

Въз основа на действия

  • Двустепенен
  • Ограничен
  • Екшън модел

Въз основа на структурата

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

Какво е график?

Графикът е процес, който създава една група от множество паралелни транзакции и ги изпълнява една по една. Той трябва да запази реда, в който се появяват инструкциите във всяка транзакция. Ако две транзакции се изпълняват едновременно, резултатът от една транзакция може да повлияе на изхода на друга.

Пример

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

Ако транзакция 2 се изпълни преди транзакция 1, ще бъде прочетена остаряла информация за количеството на продукта. Следователно са необходими графици.

Паралелното изпълнение в база данни е неизбежно. Но паралелното изпълнение е разрешено, когато има връзка на еквивалентност между едновременно изпълняващите се транзакции. Тази еквивалентност е от 3 вида.

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

Ако два графика показват един и същ резултат след изпълнение, той се нарича график с еквивалентен резултат. Те могат да предложат същия резултат за дадена стойност и различни резултати за друг набор от стойности. Например една транзакция актуализира количеството на продукта, докато друга актуализира данните за клиента.

Преглед на еквивалентността

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

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

В този случай две транзакции актуализират/преглеждат един и същ набор от данни. Има конфликт между транзакцията, тъй като редът на изпълнение ще повлияе на изхода.

Какво е сериализируемост?

Възможността за сериализиране е процес на търсене на паралелен график, чийто изход е равен на сериен график, при който транзакциите се изпълняват една след друга. В зависимост от вида на графиците има два вида възможност за сериализиране:

  • Конфликт
  • Гледка

Oбобщение

  • Управлението на транзакциите е логическа единица за обработка в СУБД, която включва една или повече операции за достъп до база данни
  • Транзакцията е програмна единица, чието изпълнение може или не може да промени съдържанието на база данни.
  • Неуправлението на едновременния достъп може да създаде проблеми като хардуерен срив и системни сривове.
  • Активна, частично ангажирана, ангажирана, неуспешна и прекратена са важни състояния на транзакцията.
  • Пълната форма на ACID Properties в СУБД is Atomicity, последователност, изолация и издръжливост
  • Три вида транзакции на СУБД са База на области на приложение, Действие и Структура.
  • Графикът е процес, който създава една група от множество паралелни транзакции и ги изпълнява една по една.
  • Възможността за сериализиране е процесът на търсене на паралелен график, чийто резултат е равен на сериен график, при който транзакциите се изпълняват една след друга.