Zuerst bei Minimum Sie sollten ein SELECT ... FOR UPDATE
durchführen also sperren Sie die Zeilen gegen andere SELECT ... FOR [SHARE|UPDATE]
Zugang. Sie müssen dies innerhalb einer Transaktion tun und diese Transaktion halten, bis Sie die letzte Zeile aktualisieren und commit
.
Die Zeilen, die Sie SELECT ... FOR UPDATE
nicht gesperrt gegen normales SELECT
; Sie sind immer noch für andere Transaktionen lesbar, die FOR UPDATE
nicht verwenden oder FOR SHARE
.
Besser noch, versuchen Sie, das Ganze als UPDATE ... FROM
umzuformulieren oder andere satzbasierte Operationen, bei denen Sie die gesamte Arbeit in einer einzigen Abfrage erledigen. Es wird im Allgemeinen eine massiv bessere Leistung erbringen als ein SELECT ... FOR UPDATE
gefolgt von einem Strom von UPDATE
s.