wake-up-neo.com

Wie funktionieren ACID- und Datenbanktransaktionen?

Welche Beziehung besteht zwischen ACID und Datenbanktransaktion?

Gibt ACID eine Datenbanktransaktion oder ist es dasselbe?

Könnte jemand dieses Thema aufklären.

148

ACID ist eine Reihe von Eigenschaften, die Sie beim Ändern einer Datenbank anwenden möchten.

  • Atomarität
  • Konsistenz
  • Isolierung
  • Haltbarkeit

Eine Transaktion besteht aus einer Reihe verwandter Änderungen, mit denen einige der ACID-Eigenschaften erzielt werden. Transaktionen sind Werkzeuge zum Erreichen der ACID-Eigenschaften.

Atomicity bedeutet, dass Sie garantieren können, dass eine Transaktion vollständig oder gar nicht stattfindet. Sie können komplexe Vorgänge als eine einzige Einheit durchführen, alles oder nichts, und ein Absturz, ein Stromausfall, ein Fehler oder etwas anderes führt dazu, dass Sie sich nicht in einem Zustand befinden, in dem nur einige der damit verbundenen Änderungen stattgefunden haben.

Konsistenz bedeutet, dass Sie garantieren, dass Ihre Daten konsistent sind. Keine der Einschränkungen, die Sie für verwandte Daten haben, wird jemals verletzt.

Isolation bedeutet, dass eine Transaktion keine Daten aus einer anderen Transaktion lesen kann, die noch nicht abgeschlossen ist. Wenn zwei Transaktionen gleichzeitig ausgeführt werden, sieht jeder die Welt so, als würden sie nacheinander ausgeführt, und wenn einer Daten lesen muss, die von einem anderen geschrieben wurden, muss er warten, bis der andere abgeschlossen ist.

Haltbarkeit bedeutet, dass nach Abschluss einer Transaktion sichergestellt ist, dass alle Änderungen auf einem dauerhaften Medium (z. B. einer Festplatte) aufgezeichnet wurden, und dass die Transaktion ebenfalls abgeschlossen wurde.

Transaktionen sind also ein Mechanismus, um diese Eigenschaften zu garantieren. Sie sind eine Möglichkeit, verwandte Aktionen zu gruppieren, sodass eine Gruppe von Operationen als Ganzes atomar sein, konsistente Ergebnisse liefern, von anderen Operationen isoliert und dauerhaft aufgezeichnet werden kann.

303
Brian Campbell

ACID sind wünschenswerte Eigenschaften jeder Transaktionsverarbeitungs-Engine.

Ein DBMS ist (wenn es überhaupt ein gutes ist) eine bestimmte Art von Transaktionsverarbeitungs-Engine, die diese Eigenschaften in der Regel in sehr großem Umfang, jedoch nicht vollständig verfügbar macht.

Es gibt aber auch andere Motoren, die diese Eigenschaften offenlegen können. Die Art von Software, die früher als "TP-Monitore" bezeichnet wurde, ist ein typisches Beispiel (heutzutage sind es meistens Webserver).

Solche TP-Monitore können auf andere Ressourcen als ein DBMS (z. B. einen Drucker) zugreifen und weiterhin ACID gegenüber ihren Benutzern garantieren. Ein Beispiel dafür, was ACID bedeuten könnte, wenn ein Drucker an einer Transaktion beteiligt ist:

  • Atomicity: Ein gesamtes Dokument wird gedruckt oder gar nicht
  • Konsistenz: Am Ende der Transaktion befindet sich der Papiereinzug oben auf der Seite
  • Isolation: Beim Drucken werden keine zwei Dokumente verwechselt
  • Haltbarkeit: Der Drucker kann garantieren, dass nicht mit leeren Patronen "gedruckt" wurde.
34
Erwin Smout

Ich habe das Druckerbeispiel leicht modifiziert, um es verständlicher zu machen

1 Dokument mit 2 Seiten Inhalt wurde an den Drucker gesendet

Transaktion - Dokument an Drucker gesendet

  • atomicity - Der Drucker druckt 2 Seiten eines Dokuments oder keine
  • Konsistenz - Der Drucker druckt eine halbe Seite und die Seite bleibt hängen. Der Drucker startet sich selbst neu und druckt 2 Seiten mit allen Inhalten
  • Isolation - Während zu viele Ausdrucke ausgeführt wurden, druckt der Drucker den richtigen Inhalt des Dokuments
  • Haltbarkeit - Während des Druckvorgangs gab es einen Stromausfall. Der Drucker druckt die Dokumente erneut ohne Fehler

Hoffe, dies hilft jemandem, den Dreh raus zu bekommen

17
Manish Singh

ACID-Eigenschaften sind sehr alte und wichtige Konzepte der Datenbanktheorie. Ich weiß, dass Sie viele Beiträge zu diesem Thema finden können, aber ich möchte trotzdem gerne eine gemeinsame Antwort zu diesem Thema geben, da dies ein sehr wichtiges Thema von RDBMS ist.

Das Datenbanksystem spielt mit vielen verschiedenen Arten von Transaktionen, bei denen alle Transaktionen bestimmte Merkmale aufweisen. Diese Eigenschaft ist als ACID-Eigenschaft bekannt. ACID-Eigenschaften benötigen den Berechtigten für alle Datenbanktransaktionen, um alle Aufgaben auszuführen.

Atomarität: Entweder alles oder nichts festlegen.

Konsistenz: Führen Sie eine konsistente Aufzeichnung durch, um alle Regeln und Einschränkungen der Transaktion zu validieren.

Isolation: Stellen Sie sicher, dass sich zwei Transaktionen nicht bewusst sind.

Haltbarkeit: Festgeschriebene Daten werden für immer gespeichert. Referenz aus diesem Artikel entnommen:

10
Anvesh

Welche Beziehung besteht zwischen ACID und Datenbanktransaktion?

In einer relationalen Datenbank muss jede SQL-Anweisung im Rahmen einer Transaktion ausgeführt werden.

Ohne die Transaktionsgrenzen explizit zu definieren, verwendet die Datenbank eine implizite Transaktion, die jede einzelne Anweisung umschließt.

Die implizite Transaktion beginnt vor der Ausführung der Anweisung und endet (Festschreiben oder Zurücksetzen) nach der Ausführung der Anweisung. Der implizite Transaktionsmodus wird allgemein als Autocommit bezeichnet.

Wie in dieser Artikel erläutert, ist eine Transaktion eine Sammlung von Lese-/Schreibvorgängen, die nur erfolgreich sind, wenn alle enthaltenen Vorgänge erfolgreich sind.

Atomicity

Inhärent ist eine Transaktion durch vier Eigenschaften gekennzeichnet (im Allgemeinen als ACID bezeichnet):

  • Atomarität
  • Konsistenz
  • Isolierung
  • Haltbarkeit

Gibt ACID eine Datenbanktransaktion oder ist es dasselbe?

Für ein relationales Datenbanksystem gilt dies, da der SQL-Standard festlegt, dass eine Transaktion die ACID-Garantien bieten soll:

Atomarität

Atomicity nimmt einzelne Operationen und macht sie zu einer Alles-oder-Nichts-Einheit. Dies gelingt nur dann, wenn alle enthaltenen Operationen erfolgreich sind.

Eine Transaktion kann eine Statusänderung einschließen (es sei denn, es handelt sich um eine schreibgeschützte Transaktion). Eine Transaktion muss das System immer in einem konsistenten Zustand belassen, unabhängig davon, wie viele gleichzeitige Transaktionen zu einem bestimmten Zeitpunkt verschachtelt sind.

Konsistenz

Konsistenz bedeutet, dass Einschränkungen für jede festgeschriebene Transaktion durchgesetzt werden. Dies bedeutet, dass alle Schlüssel, Datentypen, Prüfungen und Auslöser erfolgreich sind und keine Einschränkungsverletzung ausgelöst wird.

Isolierung

Transaktionen erfordern Parallelitätskontrollmechanismen und garantieren die Richtigkeit, auch wenn sie verschachtelt sind. Isolation bringt uns den Vorteil, nicht festgeschriebene Statusänderungen vor der Außenwelt zu verbergen, da fehlgeschlagene Transaktionen niemals den Status des Systems beschädigen dürfen. Die Isolation wird durch die gleichzeitige Kontrolle mit Hilfe von pessimistischen oder optimistischen Sperrmechanismen erreicht.

Haltbarkeit

Eine erfolgreiche Transaktion muss den Status eines Systems dauerhaft ändern. Vor dem Beenden werden die Statusänderungen in einem dauerhaften Transaktionsprotokoll aufgezeichnet. Wenn unser System plötzlich von einem Systemabsturz oder einem Stromausfall betroffen ist, werden möglicherweise alle noch nicht abgeschlossenen festgeschriebenen Transaktionen wiederholt.

enter image description here

Weitere Informationen zur Haltbarkeit und zum Wiederherstellen von Protokollen finden Sie in diesem Artikel .

9
Vlad Mihalcea

Zitat Wikipedia :

ACID (Atomicity, Consistency, Isolation, Durability) ist eine Reihe von Eigenschaften, die eine zuverlässige Verarbeitung von Datenbanktransaktionen gewährleisten.

Ein DBMS, das Transaktionen unterstützt, ist bestrebt, alle diese Eigenschaften zu unterstützen - jedes kommerzielle DBMS (sowie mehrere Open-Source-DBMS) bieten vollständige ACID- "Unterstützung" - obwohl dies häufig möglich ist (z. B. mit unterschiedlichen Isolationsstufen in MSSQL) Verringern Sie die ACIDness - und verlieren Sie damit die Garantie für ein vollständiges Transaktionsverhalten.

4
Will A

[Gray] führte 1981 die ACD-Eigenschaften für eine Transaktion ein. 1983 fügte [Haerder] die Isolation-Eigenschaft hinzu. Meiner Meinung nach hätten die ACD-Eigenschaften einen nützlicheren Satz von Eigenschaften, die zu diskutieren sind. Eine Interpretation von Atomicity (dass die Transaktion von jedem Client aus jederzeit atomar sein sollte) impliziert tatsächlich die Isolationseigenschaft. Die Eigenschaft "isolation" ist nützlich, wenn die Transaktion nicht isoliert ist. wenn die Isolationseigenschaft entspannt ist. In ANSI SQL sprechen: Wenn die Isolationsstufe schwächer ist, dann SERIALIZABLE. Wenn die Isolationsstufe jedoch SERIALIZABLE ist, ist die Isolationseigenschaft nicht wirklich von Interesse.

Ich habe mehr darüber in einem Blogbeitrag geschrieben: "SÄURE ergibt keinen Sinn".

http://blog.franslundberg.com/2013/12/acid-does-not-make-sense.html

[Gray] The Transaction Concept, Jim Gray, 1981. http://research.Microsoft.com/en-us/um/people/gray/papers/theTransactionConcept.pdf

[Haerder] Prinzipien der transaktionsorientierten Datenbankwiederherstellung, Haerder und Reuter, 1983. http://www.stanford.edu/class/cs340v/papers/recovery.pdf

2
Frans Lundberg

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

Jede Transaktion muss vier Eigenschaften enthalten, die allgemein als ACID-Eigenschaften bezeichnet werden. Das heißt, ACID ist die Gruppe von Eigenschaften einer Transaktion.

  • Atomizität:
  • Konsistenz
  • Isolierung
  • Haltbarkeit
0
rashedcs