Co to jest transakcja w bazie danych?


Odpowiedzi:


239

Transakcja to jednostka pracy, którą chcesz traktować jako „całość”. Musi się to wydarzyć w całości lub wcale.

Klasycznym przykładem jest przelewanie pieniędzy z jednego konta bankowego na drugie. Aby to zrobić, musisz najpierw wypłacić kwotę z konta źródłowego, a następnie przelać ją na konto docelowe. Operacja musi zakończyć się pełnym sukcesem. Jeśli zatrzymasz się w połowie drogi, pieniądze zostaną utracone, a to jest bardzo złe.

W nowoczesnych bazach danych transakcje robią również inne rzeczy - na przykład zapewniają, że nie masz dostępu do danych, które inna osoba zapisała w połowie drogi. Ale podstawowa idea jest taka sama - transakcje mają na celu zapewnienie, że niezależnie od tego, co się stanie, dane, z którymi pracujesz, będą w rozsądnym stanie . Gwarantują, że NIE dojdzie do sytuacji, w której pieniądze zostaną pobrane z jednego konta, ale nie zostaną wpłacone na inne.


Dzięki za bardzo prosty przykład
Nomadme

niezłe wyjaśnienie!
Yan Myo Aung

81

Transakcja to sposób przedstawienia zmiany stanu. Transakcje idealnie mają cztery właściwości, powszechnie znane jako ACID:

  • Atomowa (jeśli zmiana zostanie zatwierdzona, dzieje się to za jednym zamachem; nigdy nie widać „połowy zmiany”)
  • Spójne (zmiana może nastąpić tylko wtedy, gdy nowy stan systemu będzie ważny; każda próba wprowadzenia nieprawidłowej zmiany zakończy się niepowodzeniem, pozostawiając system w jego poprzednim prawidłowym stanie)
  • Izolowane (nikt inny nie widzi żadnej części transakcji, dopóki nie zostanie zatwierdzona)
  • Trwałe (po dokonaniu zmiany - jeśli system mówi, że transakcja została zatwierdzona, klient nie musi martwić się o „opróżnianie” systemu, aby „przyklejać” zmianę)

Aby uzyskać więcej informacji, zobacz wpis Wikipedii ACID .

Chociaż jest to zwykle stosowane do baz danych, nie musi tak być. (W szczególności zobacz Pamięć transakcyjna oprogramowania ).


46

Oto proste wyjaśnienie. Musisz przelać 100 dolców z konta A na konto B.Możesz zrobić:

accountA -= 100;
accountB += 100;

lub

accountB += 100;
accountA -= 100;

Jeśli coś pójdzie nie tak między pierwszą a drugą operacją w parze, masz problem - albo zniknęło 100 dolców, albo pojawiły się znikąd.

Transakcja to mechanizm, który pozwala oznaczyć grupę operacji i wykonać je w taki sposób, że albo wszystkie wykonają (zatwierdzenie), albo stan systemu będzie wyglądał tak, jakby w ogóle nie rozpoczęły wykonywania (wycofanie).

beginTransaction;
accountB += 100;
accountA -= 100;
commitTransaction;

prześle 100 dolców lub pozostawi oba konta w stanie początkowym.


31

„Seria instrukcji dotyczących manipulacji danymi, które muszą albo całkowicie zakończyć się, albo całkowicie zakończyć się niepowodzeniem, pozostawiając bazę danych w stanie spójności”


2
Nie tylko baza danych. Możemy rozszerzyć tę koncepcję na inne komponenty - takie jak usługa kolejkowania, czy stan systemów zewnętrznych. Czyli „Seria oświadczeń o manipulacji danymi, które muszą albo całkowicie zakończyć się, albo całkowicie zawieść, pozostawiając system w stanie spójnym”
Michał Chaniewski

10

Transakcja to sekwencja jednej lub więcej operacji SQL, które są traktowane jako jednostka.

W szczególności wydaje się, że każda transakcja przebiega w izolacji, a ponadto, jeśli system zawiedzie, każda transakcja jest wykonywana w całości lub nie w całości.

Koncepcja transakcji jest motywowana dwoma całkowicie niezależnymi koncernami. Jeden dotyczy jednoczesnego dostępu do bazy danych przez wielu klientów, a drugi dotyczy posiadania systemu odpornego na awarie systemu.

Transakcja obsługuje tak zwane właściwości ACID:

  • O: Atomowość;
  • C: spójność;
  • I: Izolacja;
  • D: Trwałość.


1

Sugerowałbym, że definicja „przetwarzania transakcji” byłaby bardziej użyteczna, ponieważ obejmuje transakcje jako pojęcie w informatyce.

Z Wikipedii:

W informatyce przetwarzanie transakcji to przetwarzanie informacji podzielone na indywidualne, niepodzielne operacje, zwane transakcjami. Każda transakcja musi zakończyć się sukcesem lub niepowodzeniem jako całość; nie może pozostać w stanie pośrednim.

http://en.wikipedia.org/wiki/Transaction_processing#Implementations


1

Oprócz powyższych odpowiedzi należy zauważyć, że przynajmniej w teorii nie ma żadnych ograniczeń co do tego, jakie zasoby są zaangażowane w transakcję.

W większości przypadków jest to tylko baza danych lub wiele odrębnych baz danych, ale można również sobie wyobrazić, że drukarka bierze udział w transakcji i może spowodować, że transakcja się nie powiedzie, na przykład w przypadku zacięcia papieru.


1

Transakcję można zdefiniować jako zbiór zadań, które są uważane za minimalną jednostkę przetwarzania. Żadnej minimalnej jednostki przetwarzania nie można dalej podzielić.

Główne operacje transakcji to odczyt i zapis.

Wszystkie transakcje muszą zawierać cztery właściwości, które są powszechnie znane jako właściwości ACID w celu zapewnienia dokładności, kompletności i integralności danych.


0

Myślę, że transakcja jest akcją atomową w odniesieniu do DBMS.

to znaczy, że nie można go oddzielić. tak, w transakcji może istnieć kilka instrukcji do wykonania przez system. ale są związani razem, aby wykonać jedno podstawowe zadanie.

na przykład. musisz przejść przez most (potraktujmy to jako transakcja), a żeby to zrobić, powiedzmy, potrzebujesz 100 kroków. ogólnie rzecz biorąc, tych kroków nie można oddzielić. kiedy wykonasz połowę z nich, masz tylko dwa wyjścia: kontynuuj je wszystkie i wróć do punktu początkowego. wygląda jak wynik transakcji: sukces (zatwierdzenie) i niepowodzenie (wycofanie)


0

Transakcja jest niepodzielną jednostką przetwarzania danych - Wszystkie transakcje muszą mieć właściwości ACID:

czyli: atomowość, spójność, izolacja i trwała transakcja to wszystko albo nic, ale nie pośrednie (oznacza to, że jeśli przelejesz pieniądze z jednego konta na inne, jedno konto musi tyle stracić, a drugie zyskać tę kwotę, ale jeśli przelewasz pieniądze z jednego konta, a inne jest nadal puste, co nie będzie transakcją)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.