Transakcja SQL to sekwencja jednej lub większej liczby operacji SQL (np.INSERT UPDATE DELETE) wykonany jako pojedyncza jednostka pracy. Transakcje zapewniają, że albo wszystkie operacje powiodą się, albo nie zostaną wykonane żadne operacje, zachowując integralność danych.
Kluczowe właściwości transakcji SQL: ACID
Integralność transakcji SQL regulują właściwości ACID, które gwarantują niezawodne transakcje w bazie danych. Te cztery właściwości współpracują ze sobą, aby zagwarantować, że baza danych pozostanie spójna i niezawodna.
- Atomowość: Wynik transakcji może zakończyć się całkowitym sukcesem lub całkowitym niepowodzeniem. Cała transakcja musi zostać wycofana, jeśli jedna jej część zakończy się niepowodzeniem.
- Konsystencja: Transakcje zachowują ograniczenia integralności, przenosząc bazę danych z jednego prawidłowego stanu do drugiego.
- Izolacja: Jednoczesne transakcje są od siebie izolowane, co zapewnia dokładność danych.
- Trwałość: Po zatwierdzeniu transakcji jej modyfikacje pozostają w mocy nawet w przypadku awarii systemu.
Polecenia kontroli transakcji SQL
W poleceniach kontroli transakcji SQL zarządzaj wykonywanie operacji SQL zapewniających integralność i niezawodność transakcji bazodanowych. Polecenia te pomagają zarządzać zatwierdzaniem początkowym i wycofywaniem zmian wprowadzonych w bazie danych. Poniżej znajdują się kluczowe polecenia kontroli transakcji w języku SQL wyjaśnione wraz ze składnią i przykładami każdego z nich.
1. ROZPOCZNIJ TRANSAKCJĘ Polecenie
TheBEGIN TRANSACTIONpolecenie oznacza początek nowej transakcji. Wszystkie instrukcje SQL następujące po tym poleceniu będą częścią tej samej transakcji do momentu aCOMMIT Lub ROLLBACK spotyka się. To polecenie nie wprowadza żadnych zmian w bazie danych, po prostu rozpoczyna transakcję.
Składnia:
BEGIN TRANSACTION transaction_name ;Przykład transakcji SQL ze scenariuszem przelewu bankowego
Spójrzmy na przykład przelewu bankowego pomiędzy dwoma kontami. Ten przykład ilustruje użycie wielu zapytań w jednej transakcji.
BEGIN TRANSACTION;
-- Deduct 0 from Account A
UPDATE Accounts
SET Balance = Balance - 150
WHERE AccountID = 'A';
-- Add 0 to Account B
UPDATE Accounts
SET Balance = Balance + 150
WHERE AccountID = 'B';
-- Commit the transaction if both operations succeed
COMMIT;
Jeśli wystąpi jakikolwiek błąd, taki jak problem z plikiemUPDATEzapytanie, którego możesz użyćROLLBACKaby cofnąć wszystkie zmiany dokonane podczas transakcji:
ROLLBACK;Dzięki temu system nie znajdzie się w niespójnym stanie, takim jak pobieranie pieniędzy z jednego konta bez dodawania ich do drugiego.
BEGIN TRANSACTION TransferFunds;2. Polecenie ZATWIERDŹ
TheCOMMITpolecenie służy do zapisania do bazy danych wszystkich zmian dokonanych podczas bieżącej transakcji. Po zatwierdzeniu transakcji zmiany są trwałe.
Składnia:
COMMIT;Przykład
Oto próbkaStudenttabela, która będzie używana do wykonywania operacji w tym przykładzie. Ta tabela zawiera podstawowe dane ucznia, takie jak wiek, imię i nazwisko oraz inne istotne informacje, którymi można manipulować przy użyciu różnych metod polecenia kontroli transakcji.
Stół studenckiPoniżej znajduje się przykład, który usuwałby z tabeli te rekordy, które mają wiek = 20, a następnie zatwierdzał zmiany w bazie danych.
DELETE FROM Student WHERE AGE = 20;
COMMIT;
Wyjście
wyjście3. Polecenie COFNIJ
TheROLLBACKpolecenie służy do cofania wszystkich zmian dokonanych w bieżącej transakcji. Stosuje się go, gdy wystąpi błąd lub gdy nie można dokonać żądanych zmian. Baza danych powróci do stanu sprzed BEGIN TRANSACTION został stracony.
Składnia:
ROLLBACK;Przykład
Usuń te rekordy z tabeli, które mają wiek = 20, a następnie COFNIJ zmiany w bazie danych. W tym przypadku DELETE operacja zostanie cofnięta, a zmiany w bazie danych nie zostaną zapisane.
tablice Java
DELETE FROM Student WHERE AGE = 20;
ROLLBACK;
Wyjście:
wyjście4. Polecenie ZAPISZPUNKT
ASAVEPOINTsłuży do tworzenia punkt kontrolny w ramach transakcji. Możemy wrócić do konkretnegoSAVEPOINTzamiast wycofywać całą transakcję. Dzięki temu możemy zamiast tego cofnąć część transakcji całą transakcję.
Składnia:
SAVEPOINT SAVEPOINT_NAME;Przykład
SAVEPOINT SP1;
//Savepoint created.
DELETE FROM Student WHERE AGE = 20;
//deleted
SAVEPOINT SP2;
//Savepoint created.
Wyjście:
wyjścieWyjaśnienie:
Z powyższego przykładu Przykładowa tabela1 Usuń te rekordy z tabeli, które mają wiek = 20, a następnie COFNIJ zmiany w bazie danych, zachowując punkty zapisu. Tutaj SP1 jest pierwszym SAVEPOINT utworzonym przed usunięciem. W tym przykładzie miało miejsce jedno usunięcie. Po usunięciu ponownie tworzony jest SAVEPOINT SP2.
5. POWRÓT DO PUNKTU ZAPISANIA
TheROLLBACK TO SAVEPOINTpolecenie pozwala nam cofnąć transakcję do określonego punktu zapisu, skutecznie cofając zmiany wprowadzone po tym punkcie.
Składnia:
ROLLBACK TO SAVEPOINT SAVEPOINT_NAME;Przykład
Nastąpiło usunięcie, załóżmy, że zmieniliśmy zdanie i zdecydowaliśmy się na WYCOFANIE do punktu SAVEPOINT, który zidentyfikowaliśmy jako SP1, który jest przed usunięciem. Zatem w tym przypadkuDELETEoperacja zostaje cofnięta, a transakcja powraca do stanu, w jakim znajdowała się w momencieSP1punkt zapisu.
ROLLBACK TO SP1;
//Rollback completed
Wyjście:
wyjście6. Polecenie ZWOLNIJ PUNKT ZAPISU
To polecenie służy do usuwania utworzonego przez nas punktu SAVEPOINT. Po zwolnieniu punktu SAVEPOINT nie możemy już używać funkcji ROLLBACK polecenie cofania transakcji wykonanych od ostatniego SAVEPOINT. Służy do inicjowania transakcji w bazie danych i służy do określenia charakterystyki następującej po niej transakcji.
Składnia:
RELEASE SAVEPOINT SAVEPOINT_NAME;Przykład
Raz w punkcie zapisuSP2zostanie zwolniony, nie możemy już do niego wrócić.
RELEASE SAVEPOINT SP2; -- Release the second savepoint.Dlaczego warto korzystać z transakcji w bankowości?
W takim przypadku bez transakcji ryzykujesz scenariusze, w których pieniądze zostaną pobrane z jednego konta, ale nie dodane do drugiego, pozostawiając system w niespójnym stanie. Transakcje pozwalają uniknąć takich problemów, gwarantując łączny sukces lub niepowodzenie obu operacji.
Rodzaje transakcji SQL
Istnieją różne rodzaje transakcji w zależności od ich charakteru i konkretnych operacji, które wykonują:
- Przeczytaj transakcje : Używany tylko do odczytu danych, zwykle za pomocą
SELECTzapytania. - Zapisuj transakcje : Obejmują one modyfikację danych w bazie danych za pomocą
INSERTUPDATELubDELETEoperacje. - Transakcje rozproszone : Transakcje te obejmują wiele baz danych i zapewniają ich spójność.
- Niejawne transakcje : Automatycznie uruchamiany przez SQL Server dla niektórych operacji.
- Jawne transakcje : Transakcje kontrolowane ręcznie, przy użyciu których użytkownik rozpoczyna i kończy transakcję
BEGIN TRANSACTIONCOMMITIROLLBACK.
Monitorowanie i optymalizacja transakcji SQL
Aby utrzymać wydajność i zapobiec problemom, należy rozważyć następujące techniki:
1. Blokady monitora : Śledź zachowanie blokowania i dostosowuj zapytania, aby zminimalizować konflikty blokowania.
2. Ogranicz zakres transakcji : Ogranicz liczbę wierszy lub rekordów, na które ma wpływ transakcja, aby przyspieszyć przetwarzanie.
3. Użyj przetwarzania wsadowego : Jeśli obsługujesz duże ilości danych, podziel operacje na mniejsze transakcje lub partie, aby uniknąć przeciążenia systemu.
wyjątek rzuca javaSugerowany quiz Edytuj quiz 5 pytań
Który z poniższych scenariuszy najlepiej opisuje naruszenie właściwości „Izolacja” w ACID?
- A
Transakcja opuszcza bazę danych w stanie naruszającym ograniczenie klucza podstawowego.
- B
Dwie jednoczesne transakcje odczytują i zapisują te same dane, co prowadzi do niespójnych wyników.
- C
Użytkownik pomyślnie aktualizuje rekord, ale awaria systemu powoduje usunięcie zmiany.
- D
Transakcja kończy się niepowodzeniem w połowie i wszystkie wprowadzone w niej zmiany zostają cofnięte.
Jest to klasyczny przykład naruszenia izolacji, w którym stan pośredni jednej transakcji jest widoczny dla drugiej.
W aplikacji bankowej transfer środków polega na obciążeniu jednego rachunku i uznaniu innego. Która właściwość ACID gwarantuje, że obie operacje zostaną zakończone lub żadna z nich nie zostanie zakończona?
- A
Izolacja
- B
Atomowość
- C
Trwałość
- D
Konsystencja
Atomowość zapewnia pomyślne zakończenie wszystkich operacji w ramach transakcji; w przeciwnym razie cała transakcja zostanie wycofana.
Transakcja jest wykonywana i wydawany jest komunikat „COMMIT”. Natychmiast po wystąpieniu awarii zasilania. Która właściwość ACID gwarantuje, że zmiany wprowadzone przez transakcję będą nadal obecne po ponownym uruchomieniu systemu?
- A
Konsystencja
- B
Atomowość
- C
Trwałość
- D
Izolacja
Trwałość to właściwość zapewniająca, że raz zatwierdzona transakcja pozostanie taka nawet w przypadku utraty zasilania lub awarii systemu.
Jaki jest główny cel polecenia „SAVEPOINT” w transakcji?
- A
Aby zatwierdzić część transakcji.
- B
Aby zaznaczyć punkt w transakcji, do którego można później cofnąć.
- C
Aby trwale zapisać stan transakcji.
- D
Aby zakończyć transakcję i wprowadzić wszystkie zmiany na stałe.
zastąpienie metody Java
„SAVEPOINT” umożliwia częściowe wycofanie transakcji w ramach transakcji.
Rozważmy następującą transakcję: „ROZPOCZNIJ TRANSAKCJĘ; WSTAWIĆ ...; PUNKT ZAPISU A; AKTUALIZACJA ...; PUNKT ZAPISU B; USUWAĆ ...; POWRÓT DO PUNKTU ZAPISANIA A;' Jaki jest stan transakcji po wydaniu polecenia „ROLLBACK”?
- A
Cała transakcja zostaje wycofana.
- B
Cofana jest tylko operacja „USUŃ”.
- C
Występuje błąd, ponieważ nie można przywrócić punktu zapisu, który nie jest najnowszy.
- D
Opcja „INSERT” zostanie zapisana, ale operacje „UPDATE” i „DELETE” zostaną cofnięte.
Powrót do „SAVEPOINT A” cofa wszystkie zmiany wprowadzone po tym punkcie zapisu, czyli „UPDATE” i „DELETE”.
Quiz ukończony pomyślnie Twój wynik: 2/5Dokładność : 0%Zaloguj się, aby zobaczyć wyjaśnienie 1/5 1/5 < Previous Dalej >