webentwicklung-frage-antwort-db.com.de

Was ist eine Datenbanktransaktion?

Kann jemand eine einfache (aber nicht einfachere als mögliche) Erklärung für eine Transaktion im Zusammenhang mit der Datenverarbeitung abgeben (auch wenn sie aus Wikipedia kopiert wurde)?

94
Vlad Gudim

Eine Transaktion ist eine Arbeitseinheit, die Sie als "Ganzes" behandeln möchten. Es muss entweder vollständig oder gar nicht geschehen.

Ein klassisches Beispiel ist die Überweisung von Geld von einem Bankkonto auf ein anderes. Dazu müssen Sie zuerst den Betrag vom Quellkonto abheben und dann auf das Zielkonto einzahlen. Die Operation muss vollständig gelingen. Wenn Sie auf halbem Weg anhalten, geht das Geld verloren, und das ist sehr schlimm.

In modernen Datenbanken erledigen Transaktionen auch einige andere Dinge - zum Beispiel stellen Sie sicher, dass Sie nicht auf Daten zugreifen können, die eine andere Person bereits geschrieben hat. Die Grundidee ist jedoch die gleiche - Transaktionen sollen sicherstellen, dass egal, was passiert, die Daten, mit denen Sie arbeiten, sind in einem vernünftigen Zustand. Sie garantieren, dass es KEINE Situation gibt, in der Geld von einem Konto abgezogen, aber nicht auf ein anderes eingezahlt wird.

211
Vilx-

Eine Transaktion repräsentiert eine Zustandsänderung. Transaktionen haben idealerweise vier Eigenschaften, die allgemein als ACID bezeichnet werden:

  • Atomic (wenn die Änderung festgeschrieben ist, geschieht sie auf einen Schlag; Sie können nie "eine halbe Änderung" sehen)
  • Konsistent (die Änderung kann nur durchgeführt werden, wenn der neue Status des Systems gültig ist. Jeder Versuch, eine ungültige Änderung zu bestätigen, schlägt fehl und das System bleibt in seinem vorherigen gültigen Status.)
  • Isoliert (niemand anderes sieht irgendeinen Teil der Transaktion, bis sie festgeschrieben ist)
  • Dauerhaft (sobald die Änderung stattgefunden hat - wenn das System angibt, dass die Transaktion festgeschrieben wurde, muss sich der Client nicht mehr darum kümmern, das System zu "leeren", damit die Änderung "haftet".)

Weitere Informationen finden Sie im Wikipedia-Eintrag ACID .

Dies gilt zwar normalerweise für Datenbanken, muss es aber nicht sein. (Siehe insbesondere Software-Transaktionsspeicher .)

68
Jon Skeet

Hier ist eine einfache Erklärung. Sie müssen 100 Dollar von Konto A auf Konto B überweisen. Sie haben folgende Möglichkeiten:

accountA -= 100;
accountB += 100;

oder

accountB += 100;
accountA -= 100;

Wenn zwischen der ersten und der zweiten Operation in dem Paar etwas schief geht, haben Sie ein Problem - entweder sind 100 Dollar verschwunden oder sie sind aus dem Nichts aufgetaucht.

Eine Transaktion ist ein Mechanismus, mit dem Sie eine Gruppe von Vorgängen markieren und so ausführen können, dass entweder alle Vorgänge ausgeführt werden (Festschreiben) oder der Systemstatus so ist, als hätten sie überhaupt nicht mit der Ausführung begonnen (Rollback).

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

wird entweder 100 Dollar überweisen oder beide Konten im Ausgangszustand belassen.

35
sharptooth

"Eine Reihe von Datenmanipulationsanweisungen, die entweder vollständig ausgeführt werden müssen oder vollständig fehlschlagen müssen und die Datenbank in einem konsistenten Zustand belassen."

31
Rad

Eine Transaktion ist eine Folge von einer oder mehreren SQL-Operationen, die als Einheit behandelt werden.

Insbesondere scheint jede Transaktion isoliert ausgeführt zu werden, und wenn das System ausfällt, wird jede Transaktion entweder vollständig oder nicht vollständig ausgeführt.

Das Transaktionskonzept basiert auf zwei völlig unabhängigen Gesichtspunkten. Der eine hat mit dem gleichzeitigen Zugriff mehrerer Clients auf die Datenbank zu tun, der andere mit einem System, das gegenüber Systemfehlern unempfindlich ist.

Die Transaktion unterstützt die sogenannten ACID-Eigenschaften:

  • A: Atomizität;
  • C: Konsistenz;
  • I: Isolierung;
  • D: Haltbarkeit.
10
Mourad BENKDOUR

http://en.wikipedia.org/wiki/Database_transaction
http://en.wikipedia.org/wiki/ACID
ACID = [~ # ~] eine [~ # ~] Tomizität, [~ # ~] c [~ # ~] onsistency, [~ # ~] i [~ # ~] solation, [~ # ~] d [~ # ~] Urabilität

Wenn Sie möchten, dass mehrere Transaktionsressourcen an einer einzelnen Transaktion beteiligt sind, müssen Sie so etwas wie eine zweiphasige Festschreibung -Lösung verwenden. XA wird weitgehend unterstützt.

3
Stephen Denne

Ich würde vorschlagen, dass eine Definition von "Transaktionsverarbeitung" nützlicher wäre, da sie Transaktionen als ein Konzept in der Informatik abdeckt.

Aus Wikipedia:

In der Informatik ist die Transaktionsverarbeitung eine Informationsverarbeitung, die in einzelne, unteilbare Operationen unterteilt ist, die als Transaktionen bezeichnet werden. Jede Transaktion muss als vollständige Einheit erfolgreich sein oder fehlschlagen. es kann nicht in einem Zwischenzustand bleiben.

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

1
Adam Cooper

Zusätzlich zu den obigen Antworten ist anzumerken, dass zumindest theoretisch keinerlei Einschränkung besteht, welche Art von Ressourcen an einer Transaktion beteiligt sind.

In den meisten Fällen handelt es sich nur um eine Datenbank oder mehrere unterschiedliche Datenbanken. Es ist jedoch auch denkbar, dass ein Drucker an einer Transaktion teilnimmt und diese Transaktion zum Beispiel bei einem Papierstau fehlschlägt.

1
Erwin Smout

Transaktion kann als eine Sammlung von Aufgaben definiert werden, die als minimale Verarbeitungseinheit betrachtet werden. Jede minimale Verarbeitungseinheit kann nicht weiter unterteilt werden.

Die Hauptoperationen einer Transaktion sind Lesen und Schreiben.

Jede Transaktion muss vier Eigenschaften enthalten, die allgemein als ACID-Eigenschaften bezeichnet werden, um Genauigkeit, Vollständigkeit und Datenintegrität sicherzustellen.

1
rashedcs

Ich denke, eine Transaktion ist eine atomare Aktion im Sinne von DBMS.

das heißt, es kann nicht getrennt werden. Ja, in einer Transaktion kann es mehrere Anweisungen geben, die das System ausführen muss. aber sie sind aneinander gebunden, um eine einzige grundlegende Aufgabe zu erledigen.

beispielsweise. Sie müssen über eine Brücke gehen (betrachten wir dies als eine Überführung), und um dies zu tun, benötigen Sie beispielsweise 100 Schritte. Insgesamt können diese Schritte nicht getrennt werden. Wenn Sie die Hälfte der Aufgaben erledigt haben, haben Sie nur zwei Möglichkeiten: Beenden Sie alle Aufgaben und kehren Sie zum Startpunkt zurück. Es ist wie das Ergebnis einer Transaktion: Erfolg (Commit) und Misserfolg (Rollback)

0
fwoncn

Transaktion ist eine unteilbare Einheit der Datenverarbeitung -Alle Transaktionen müssen die ACID-Eigenschaften haben:

das heißt: Atomicity, Consistency, Isolation und Durable Transaction sind alles oder nichts, aber nicht dazwischen (es bedeutet, wenn Sie Ihr Geld von einem Konto auf ein anderes Konto übertragen, muss ein Konto so viel verlieren und ein anderes muss diesen Betrag gewinnen, aber wenn Sie überweisen Geld von einem Konto und ein anderes Konto ist noch leer, was keine Transaktion sein wird.)

0
Mohamed Seif