51 Stimmen

Sollte es eine Transaktion für Leseabfragen geben?

Ich habe gelesen, dass einige Entwickler/Basler die Verwendung von Transaktionen bei allen Datenbankaufrufen empfehlen, auch bei reinen Leseaufrufen. Während ich verstehe, Einfügen/Aktualisieren innerhalb einer Transaktion, was ist der Vorteil des Lesens innerhalb einer Transaktion?

0voto

David Rechtman Punkte 174

Ein weiterer guter Grund, mehrere Transaktionen für das Lesen und Einfügen zu halten, ist der Fall, dass Sie einen Datensatz auf der Grundlage der Daten einfügen möchten, die Sie von einer Select-Abfrage erhalten, und Sie möchten auch jede X eingefügte Zeile festschreiben.

Zwei Transaktionen:

  1. zum Lesen \select.
  2. für das Einfügen und Übertragen jeder X-Zeile.

können Sie dies korrekt tun, während Sie bei einer Transaktion, bei der Lese- und Schreibvorgang nicht getrennt sind, die Übergabe nicht durchführen können, ohne den Leser zu verlieren.

0voto

qqqqqqq Punkte 1313

Ich empfehle Ihnen, über die Snapshot-Isolierung als Beispiel für die Nützlichkeit der Transaktion zum Lesen von Daten zu lesen.

Außerdem finden Sie hier einen Auszug aus dem Buch Designing Data-Intensive Applications von Martin Kleppmann, der auf zwei Fälle hinweist, in denen es wichtig ist, ein transaktionsähnliches Verhalten zu haben, auch wenn Sie nur Daten aus der Datenbank lesen:

Backups
Für eine Sicherung muss eine Kopie der gesamten Datenbank erstellt werden, was unter Umständen Stunden bei einer großen Datenbank dauern kann. Während der Sicherungsvorgang läuft, werden werden weiterhin Schreibvorgänge in der Datenbank durchgeführt. Daher kann es vorkommen, dass Sie einige Teile der Sicherung eine ältere Version der Daten enthalten und andere Teile eine neuere Version. eine neuere Version enthalten. Wenn Sie von einer solchen Sicherung wiederherstellen müssen, können die Inkonsistenzen (wie z. B. verschwundenes Geld) dauerhaft werden.

Analytische Abfragen und Integritätsprüfungen
Manchmal möchten Sie vielleicht eine Abfrage ausführen, die große Teile der Daten durchsucht Datenbank durchsucht. Solche Abfragen sind in der Analytik üblich (siehe "Transaktionsverarbeitung oder Ana lytics?" auf Seite 90), oder sie können Teil einer periodischen Integritätsprüfung sein, um sicherzustellen, dass alles ob alles in Ordnung ist (Überwachung auf Datenbeschädigung). Diese Abfragen geben wahrscheinlich unsinnige Ergebnisse, wenn sie Teile der Datenbank zu unterschiedlichen Zeitpunkten beobachten. Zeit beobachten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X