Wprowadzenie do transakcji w SQL

Transakcja w języku SQL ogólnie znana jako dokonywanie płatności (wysyłanie, odbieranie, zakupy itp.), Ale jeśli chodzi o pola techniczne, jest to sposób na aktualizację logicznej jednostki informacji w bazie danych.

Transakcja to implementacja jednej lub więcej zmian w bazie danych. Możemy grupować wiele zapytań SQL i uruchamiać jednocześnie transakcję. Wszystkie zapytania SQL albo byłyby wykonywane za jednym razem, albo wszystkie byłyby wycofywane. Przyniosłoby to tylko dwa wyniki: sukces lub porażkę.

Transakcja raz zatwierdzona nie może być wycofana, może być wycofana tylko wtedy, gdy transakcja nie została zatwierdzona. MYSQL automatycznie zatwierdza zmiany w bazie danych, jeśli wszystkie zapytania zostaną wykonane pomyślnie. Aby jawnie zatwierdzić zmiany w bazie danych, najpierw należy wyłączyć automatyczne zatwierdzanie za pomocą polecenia -

Składnia: SET autocommit = 0;

Właściwości transakcji

Poniżej przedstawiono ważne właściwości transakcji, każda transakcja musi być zgodna z tymi właściwościami

1. Atomowość

Transakcja musi mieć charakter atomowy, co oznacza, że ​​dla określonej jednostki logicznej należy zakończyć manipulację danymi. Ta właściwość zapewnia, że ​​zmiany danych miały miejsce całkowicie, w przeciwnym razie wycofanie transakcji.

2. Spójność

Po zakończeniu transakcji wszystkie dostępne rekordy będą spójne podczas całej transakcji. Ta właściwość zapewnia przełączenie właściwości bazy danych po pomyślnym zatwierdzeniu lub nie.

3. Izolacja

Izolacja odnosi się do zmian danych w pewnej jednostce logicznej nie powinna wpływać na inną jednostkę. Pozwala to na niezależne wykonanie transakcji.

4. Trwałość

Zmiany dokonane podczas transakcji powinny być trwałe w systemie. W przypadku błędu systemowego ta właściwość zapewnia również, że zmiany danych mają miejsce lub nie.

Powyższa właściwość transakcji jest również znana jako właściwość ACID.

Kroki transakcji

1. Rozpocznij

Transakcja może wystąpić w wielu wykonaniach SQL, ale wszystkie SQL powinny działać jednocześnie. Jeśli którakolwiek z transakcji zakończy się niepowodzeniem, cała transakcja zostanie cofnięta. Instrukcja rozpoczęcia transakcji brzmi „START TRANSACTION”. Rozpoczyna akronim od START TRANSACTION.

Składnia: START TRANSACTION;

2. Zobowiązanie

Zatwierdzenia trwale odzwierciedlają zmiany w bazie danych. Oświadczenie o rozpoczęciu transakcji brzmi „COMMIT”.

Składnia: COMMIT;

3. Cofnij

Cofanie służy do przywrócenia zmian, tzn. Rekord nie zostanie zmieniony, byłby w poprzednim stanie. Instrukcja rozpoczęcia transakcji to „ROLLBACK”.

Składnia: ROLLBACK;

4. Savepoint

SAVEPOINT to także wyciąg z transakcji. Ta instrukcja służy do utworzenia punktu zapisu w systemie, aby operacja ROLLBACK mogła osiągnąć stan punktu zapisu.

5. Zwolnij Savepoint

RELEASE SAVEPOINT to instrukcja zwalniająca punkt zapisu i pamięć zużywaną przez system podczas tworzenia punktu zapisu.

Składnia: RELEASE SAVEPOINT SP

Uwagi - SP to nazwa punktu zapisu, gdy ten punkt zapisu został utworzony przed rozpoczęciem transakcji.

6. Ustaw transakcję

Komenda SET TRANSACTION służy do określenia atrybutu transakcji, np. Że dana transakcja jest sesją tylko do odczytu lub sesją do odczytu i zapisu.

Składnia : SET TRANSACTION (READ-WRITE | READ TYLKO);

Transakcja służy do wykonywania złożonych zmian w bazie danych. Jest wykorzystywany głównie w zmianach informacji związanych z bankowością w relacyjnej bazie danych.

Transakcja jest obsługiwana przez silnik MYSQL InnoDB. Domyślnie automatyczne zatwierdzanie pozostaje włączone, dlatego za każdym razem, gdy dowolny SQL zostanie wykonany po zatwierdzeniu wykonania, następuje automatycznie.

Transakcje za pomocą SQL

Przykład 1

Transakcja bankowa: konto obciążone kwotą 50000 od konta oszczędnościowego A i przekazało tę kwotę na rachunek kredytowy A.

Rozpocznij transakcję: ta transakcja początkowa przekształci wszystkie zapytania SQL w pojedynczą jednostkę transakcji.

UPDATE `account` SET `balance` = `balance` - 50000 WHERE user_id = 7387438;

To zapytanie SQL odejmuje kwotę od istniejącego salda konta.

UPDATE `loan_account` SET `paid_amount` = `paid_amount` + 50000 WHERE user_id = 7387438;

To zapytanie SQL dodaje kwotę do konta pożyczki użytkownika.

Insert into `transaction_details`(`user_id`, 'amount') values (7387438, '50000');

Ta kwerenda SQL wstawia nowy rekord do tabeli szczegółów transakcji, ta tabela zawiera szczegóły wszystkich transakcji użytkowników. Jeśli wszystkie zapytania zostały wykonane pomyślnie, polecenie COMMIT musi zostać wykonane, ponieważ zmiany muszą zostać trwale zapisane w bazie danych.

Zatwierdź: Ta instrukcja zatwierdzenia zapisuje zmiany wywołane przez transakcję w bazie danych. Jeśli którakolwiek z transakcji zakończy się niepowodzeniem podczas wykonywania, należy wykonać polecenie ROLLBACK, aby przywrócić pełną transakcję

Cofanie: Cofanie ma miejsce, gdy jakiekolwiek zapytanie nie powiedzie się podczas wykonywania.

Przykład nr 2

Transakcja magazynowa: W tabeli przedmiotów dostępnych jest 6 przedmiotów.

Wykonanie poniższej instrukcji START TRANSAKCJI, aby rozpocząć transakcję.

Teraz uruchom polecenie SET AUTOCOMMIT = 0 ; aby wyłączyć automatyczne zatwierdzanie

Teraz wykonaj następującą instrukcję, aby usunąć rekord z tabeli pozycji

Teraz dostępny rekord w tabeli to 4, tzn. Rekordy tymczasowo usunięte z elementów tabeli

Teraz wykonując polecenie ROLLBACK w celu przywrócenia zmian, usunięty rekord będzie dostępny w pozycjach tabeli tak jak poprzednio przed rozpoczęciem transakcji

Ponownie, jeśli zastosujesz tę samą operację usuwania, to operacja COMMIT po jej zmianie zostanie zapisana na stałe w bazie danych

Teraz widzimy, że po komendzie ROLLBACK rekord był w nowym stanie, oznacza to, że po wykonaniu operacji COMMIT zmiany nie mogą zostać przywrócone, ponieważ trwale wprowadza zmiany w bazie danych;

Korzyści z używania Transakcji w SQL

a) Korzystanie z transakcji poprawia wydajność , przy wstawianiu 1000 rekordów przy użyciu transakcji, w takim przypadku czas potrzebny byłby krótszy niż normalne wstawianie. Podobnie jak w przypadku zwykłej transakcji, za każdym razem, gdy polecenie COMMIT miałoby miejsce po każdym wykonaniu zapytania, za każdym razem zwiększałoby to czas wykonywania, podczas gdy w transakcji nie trzeba wykonywać instrukcji COMMIT po każdym zapytaniu SQL. COMMIT na końcu odzwierciedlałoby wszystkie zmiany w bazie danych jednocześnie. Również w przypadku korzystania z transakcji cofnięcie zmian byłoby znacznie łatwiejsze niż normalna transakcja. Funkcja ROLLBACK cofnie wszystkie zmiany naraz i utrzyma system w poprzednim stanie.

b) Transakcja zapewnia integralność danych w relacyjnej bazie danych. Większość baz danych używa wielu tabel do przechowywania danych, a podczas dokonywania aktualizacji mogą wystąpić zmiany w wielu tabelach w tym czasie, jeśli którekolwiek z zapytań SQL zakończy się niepowodzeniem, wówczas transakcja nie zmieni danych.

Wniosek

Korzystanie z transakcji to najlepsza praktyka w aktualizacji informacji dla jednostki logicznej w relacyjnej bazie danych. Do implementacji transakcji silnik bazy danych powinien obsługiwać transakcję jak silnik InnoDB. Transakcję, jako jednostkę instrukcji SQL, można natychmiast przywrócić za pomocą pojedynczej instrukcji ROLLBACK. Transakcja zapewnia integralność danych i poprawia wydajność bazy danych.

Polecane artykuły

Jest to przewodnik po transakcjach w SQL. Tutaj omawiamy wprowadzenie, właściwości, kroki, przykłady transakcji w SQL oraz zalety korzystania z transakcji w SQL.

  1. Co to jest SQL
  2. Narzędzia zarządzania SQL
  3. Widoki SQL
  4. Rodzaje połączeń w SQL Server
  5. Top 6 rodzajów połączeń w MySQL z przykładami