2010-01-29 4 views
19

Ich lese sehr detaillierte Anleitungen zur Verwendung von Transaktionen mit Datenbanktypen und Datenbank-Engines, aber ich habe keinen Leitfaden gefunden, der mir beibringt, wann und warum ich sie verwenden sollte.Wann sollte ich Transaktionen in meinen Abfragen verwenden?

Ich weiß Transaktionen werden in der Regel für das Banking verwendet, wenn wir also mit Gelddaten arbeiten, aber ich kann mir vorstellen, dass sie auf viele andere Arten verwendet werden.

Heute arbeite ich an einer Seite mit verschiedenen INSERT Anweisungen für eine relationale Datenbank, und ich wollte wissen, ob dies einer der Fälle ist, wenn ich sie verwenden sollte.

Ich habe den Eindruck, dass ich die Fälle nicht kenne, in denen die Daten teilweise verloren gehen (abgesehen von Codiererfehlern), also mache ich mir immer Sorgen, wann ich sie benutzen sollte.

Kann jemand diese grundlegenden Regeln erklären oder erklären?

Ich benutze MySQL 5.0.8. Sollte ich InnoDB für alle Tabellen verwenden, die Transaktionen benötigen? Wenn ja, ist InnoDB langsamer als der gemeinsame MyISAM aber ich sollte mir keine Sorgen machen? auftritt oder aus einem anderen Grund

dank

Antwort

15

Grundsätzlich kann jede Zeit, die Sie eine Arbeitseinheit, die entweder empfindlich auf äußere Veränderungen oder ist, braucht die Fähigkeit jede Änderung, wenn ein Fehler rückgängig zu machen.

Look here for some excellent answers and their reasons for using them.

+0

danke für die Hilfe, ich habe auch einige Techniken gefunden, mit Transaktionen hier zu arbeiten http://www.kennynet.co.uk/2008/12/02/php-pdo-nested-transactions/ – vitto

7

Zusätzlich zu dem, was Nick Craver schrieb, möchten Sie eine Transaktion verwenden, wenn Sie eine Reihe von Schreibvorgängen haben, die atomar ausgeführt werden müssen; das heißt, sie sollten alle erfolgreich sein oder keiner sollte Erfolg haben.

6

Transaktionen sollten verwendet werden, wenn die Möglichkeit besteht, dass entweder ein Fehler bei der Ausführung oder jemand anderes, der mitten in der Aufgabe liest oder schreibt, die Daten beschädigen könnte. Diese umfassen, sind aber nicht beschränkt auf:

  • aus einer Tabelle lesen für nachfolgende Löschung
  • Schreiben bezogenen Daten auf mehrere Tabellen
3

Sie Transaktionen verwenden, wenn Sie eine Gruppe von Aktionen, die atomar sein müssen (entweder alle erfolgreich oder keine erfolgreich) Wenn Sie diese Aktionen in eine Transaktion einschließen, können Sie Aktionen rückgängig machen, die bereits erfolgreich waren, wenn ein Fehler auftritt. Es stellt außerdem sicher, dass die Daten, mit denen Sie arbeiten, konsistent sind, da die Sperren beibehalten werden, bis die Transaktion abgeschlossen ist.

0

In einigen Gerüsten, z.B. Spring, automatische Transaktionen ermöglichen es, eine Transaktion erneut auszuführen, wenn sie fehlgeschlagen ist.

Verwandte Themen