MariaDB - Transakcje

Transakcje to sekwencyjne operacje grupowe. Działają jako pojedyncza jednostka i nie kończą się, dopóki wszystkie operacje w grupie nie zostaną pomyślnie wykonane. Pojedyncza awaria w grupie powoduje niepowodzenie całej transakcji i nie ma wpływu na bazę danych.

Transakcje zgodne z ACID (atomowość, spójność, izolacja i trwałość) -

  • Atomicity - Zapewnia powodzenie wszystkich operacji poprzez przerywanie w przypadku awarii i wycofywanie zmian.

  • Consistency - Zapewnia, że ​​baza danych zastosuje zmiany po pomyślnej transakcji.

  • Isolation - Umożliwia niezależną obsługę transakcji.

  • Durability - Zapewnia trwałość udanej transakcji w przypadku awarii systemu.

Na początku wyciągu transakcyjnego znajduje się instrukcja START TRANSACTION, po której następują instrukcje COMMIT i ROLLBACK -

  • START TRANSACTION rozpoczyna transakcję.

  • COMMIT zapisuje zmiany w danych.

  • ROLLBACK kończy transakcję, niszcząc wszelkie zmiany.

W przypadku pomyślnej transakcji COMMIT działa. W przypadku awarii ROLLBACK działa.

Note- Niektóre instrukcje powodują niejawne zatwierdzenie, a także powodują błąd, gdy są używane w transakcjach. Przykłady takich instrukcji to między innymi CREATE, ALTER i DROP.

Transakcje MariaDB obejmują również opcje, takie jak SAVEPOINT i LOCK TABLES. SAVEPOINT ustawia punkt przywracania do wykorzystania z ROLLBACK. LOCK TABLES umożliwia kontrolowanie dostępu do tabel podczas sesji, aby zapobiec modyfikacjom w określonych okresach czasu.

Zmienna AUTOCOMMIT zapewnia kontrolę nad transakcjami. Ustawienie 1 wymusza uznanie wszystkich operacji za transakcje zakończone sukcesem, a ustawienie 0 powoduje, że zmiany zachodzą tylko w przypadku jawnej instrukcji COMMIT.

Struktura transakcji

Ogólna struktura wyciągu transakcyjnego polega na rozpoczęciu od START TRANSACTION. Następnym krokiem jest wstawienie jednego lub więcej poleceń / operacji, wstawienie instrukcji sprawdzających błędy, wstawienie instrukcji ROLLBACK w celu zarządzania wykrytymi błędami i na końcu wstawienie instrukcji COMMIT w celu zastosowania zmian w operacjach zakończonych powodzeniem.

Przejrzyj przykład podany poniżej -

START TRANSACTION;
SELECT name FROM products WHERE manufacturer = 'XYZ Corp';
UPDATE spring_products SET item = name;
COMMIT;