Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wann sollte ich MySQL-Transaktionen verwenden?

Transaktionen werden verwendet, wenn Sie eine Gruppe von Abfragen haben, die alle voneinander abhängen.

Zum Beispiel eine Bank:

  • Bankkunde "John" überweist $100 auf das Konto von "Alice".
  • Für dieses Beispiel gibt es 2 Abfragen (ich zeige keine Protokollierung oder Transaktionshistorie usw.). Sie müssen 100 $ von Johns Guthaben abziehen und diese zu Alices Guthaben hinzufügen.
  • Start transaction
  • Abzug von John
    • UPDATE accounts SET balance=balance-100 WHERE account='John'
  • Zu Alice hinzufügen
    • UPDATE accounts SET balance=balance+100 WHERE account='Alice'
  • commit

Eine Transaktion wird erst gespeichert, wenn Sie sie festschreiben. Wenn also in einer der Abfragen ein Fehler aufgetreten ist, können Sie rollback aufrufen und machen Sie alle Abfragen rückgängig, die seit dem Start der Transaktion ausgeführt wurden. Wenn die Abfrage zum Hinzufügen von 100 $ zu Alice aus irgendeinem Grund fehlgeschlagen ist, könnten Sie einen Rollback durchführen und John 100 $ nicht abziehen. So stellen Sie sicher, dass Sie Abfragen bei Bedarf automatisch rückgängig machen können.

  • Soll ich eine Transaktion starten, wenn ich zwei oder mehr Abfragen zum Löschen/Aktualisieren/Einfügen ausführe?

    Hängt davon ab, was die Abfragen tun.

  • Soll ich auch eine Transaktion starten, wenn ich nur eine Lösch-/Aktualisier-/Einfüge-Abfrage habe?

    Nicht erforderlich, es sei denn, Sie benötigen eine Möglichkeit, die Abfrage zurückzusetzen (rückgängig zu machen), wie Sie eine Aktualisierung durchführen und sie validieren möchten, bevor Sie "commit" (speichern) aufrufen.

  • Soll ich eine Transaktion etwa 10 Mal auf einer Seite starten, oder besser nur einmal für die ganze Seite, oder empfehlen Sie ein Maximum für jede Seite (zB 5)?

    Beginnen Sie so viele wie Sie brauchen. Ich würde bezweifeln, dass Sie mehrere Transaktionen pro Seite haben, da Sie höchstwahrscheinlich bei jedem Laden einer Seite eine Sache tun würden (z. B. Geld überweisen).