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;