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

Що таке транзакція бази даних?

A Транзакція бази даних це логічна одиниця обробки в СУБД, яка передбачає одну або більше операцій доступу до бази даних. У двох словах, транзакції бази даних представляють реальні події будь-якого підприємства.

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

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

Факти про транзакції бази даних

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

Навіщо вам потрібна паралельність у транзакціях?

База даних — це спільний ресурс, доступ до якого здійснюється. Він використовується багатьма користувачами та процесами одночасно. Наприклад, банківська система, системи бронювання залізничних та авіарейсів, моніторинг фондового ринку, інвентаризація супермаркетів та каси тощо.

Якщо не керувати одночасним доступом, можуть виникнути такі проблеми:

  • Збій обладнання та системні збої
  • Одночасне виконання однієї транзакції, тупикабо низька продуктивність

Стани транзакцій

Нижче наведено різні стани концепції транзакції в СУБД:

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

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

  1. Як тільки транзакція повідомляє про виконання, вона стає активною. Він може виконувати операцію READ або WRITE.
  2. Після завершення операцій READ і WRITE транзакції стають частково зафіксованими.
  3. Крім того, деякі протоколи відновлення повинні гарантувати, що збій системи не призведе до неможливості постійного запису змін у транзакції. Якщо ця перевірка проходить успішно, транзакція фіксується та переходить у стан фіксації.
  4. Якщо перевірка виявилася невдалою, транзакція переходить у стан Failed.
  5. Якщо транзакцію переривається, коли вона перебуває в активному стані, вона переходить у стан невдачі. Транзакцію слід відкотити, щоб скасувати вплив її операцій запису на базу даних.
  6. Припинений стан означає, що транзакція залишає систему.

Що таке властивості 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 типи.

ЕКВІВАЛЕНТНІСТЬ РЕЗУЛЬТАТУ:

Якщо два розклади відображають однаковий результат після виконання, це називається розкладом еквівалентного результату. Вони можуть запропонувати той самий результат для одного значення та різні результати для іншого набору значень. Наприклад, одна транзакція оновлює кількість продукту, а інша – дані клієнта.

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

Еквівалентність перегляду виникає, коли транзакція в обох розкладах виконує подібну дію. Наприклад, одна транзакція вставляє деталі продукту в таблицю продуктів, а інша транзакція вставляє деталі продукту в архівну таблицю. Транзакція однакова, але таблиці різні.

КОНФЛІКТ Еквівалентність

У цьому випадку дві транзакції оновлюють/переглядають той самий набір даних. Існує конфлікт між транзакціями, оскільки порядок виконання вплине на результат.

Що таке можливість серіалізації?

Серіалізованість — це процес пошуку паралельного розкладу, вихід якого дорівнює послідовному розкладу, де транзакції виконуються одна за одною. Залежно від типу розкладів існує два типи серіалізованості:

  • конфлікт
  • вид

Підсумки

  • Управління транзакціями - це логічна одиниця обробки в СУБД, яка передбачає одну або більше операцій доступу до бази даних
  • Це транзакція - це програмний блок, виконання якого може або не може змінити вміст бази даних.
  • Якщо не керувати одночасним доступом, це може спричинити такі проблеми, як збій обладнання та збої системи.
  • «Активна», «Частково здійснена», «Здійснена», «Помилка» та «Припинена» є важливими станами транзакції.
  • Повна форма ACID Properties в СУБД is Atomicity, послідовність, ізоляція та довговічність
  • Три типи транзакцій СУБД: Base on Application Areas, Action і Structure.
  • Розклад — це процес, який створює одну групу з кількох паралельних транзакцій і виконує їх одну за одною.
  • Серіалізованість — це процес пошуку паралельного розкладу, результат якого дорівнює послідовному розкладу, де транзакції виконуються одна за одною.