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

Warum SELECT FOR UPDATE verwenden?

SELECT ... FOR UPDATE sperrt den Datensatz mit einer (exklusiven) Schreibsperre, bis die Transaktion abgeschlossen ist (committed oder rollback).

Um einen Datensatz auszuwählen und sicherzustellen, dass er nicht geändert wird, bis Sie ihn aktualisieren, können Sie eine Transaktion starten, indem Sie den Datensatz mit SELECT ... FOR UPDATE auswählen , führen Sie eine schnelle Verarbeitung durch, aktualisieren Sie den Datensatz und schreiben Sie die Transaktion fest (oder setzen Sie sie zurück).

Wenn Sie SELECT ... FOR UPDATE verwenden Außerhalb einer Transaktion (Autocommit ON), dann wird die Sperre dennoch sofort freigegeben, verwenden Sie also unbedingt eine Transaktion, um die Sperre beizubehalten.

Lassen Sie Transaktionen aus Leistungsgründen nicht sehr lange offen, daher sollte die Aktualisierung sofort durchgeführt werden.