Re: [PGSQL] TABLE LOCK vs. SELECT mit ON UPDATE Klausel
Von: Bernd Nawothnig (bernd.nawothnig@t-online.de) [Profil]
Datum: 16.10.2009 03:11
Message-ID: <irtkq6x324.ln2@bernd.nawothnig.dialin.t-online.de>
Newsgroup: de.comp.datenbanken.misc
Datum: 16.10.2009 03:11
Message-ID: <irtkq6x324.ln2@bernd.nawothnig.dialin.t-online.de>
Newsgroup: de.comp.datenbanken.misc
Hallo zusammen, um paralleles Rechnen zu steuern, verwende ich eine Tabelle, in der Tasks zeilenweise eingetragen sind. Ist die host-Spalte NULL, ist der Task frei. Jeder Client fragt die Tabelle ab und greift sich die erste Zeile (LIMIT 1), in der die host-Spalte NULL ist und setzt in derselben Transaktion die Hostspalte auf den eigenen Hostnamen. Um das Problem des gleichzeitigen Zugriffs zweier Clients auf dieselbe Zeile zu lösen, verwende ich bisher einen LOCK TABLE IN ACCESS ECLUSIVE MODE, was soweit auch gut zu funktionieren scheint. Allerdings erscheint mir das reichlich schweres Geschütz und ich bin gerade auf die ON UPDATE Klausel der SELECT Anweisung gestoßen, die ziemlich exakt das zu machen scheint, was ich eigentlich nur brauche. Allerdings finde ich in der Dokumentation das hier: SELECT FOR UPDATE will wait for the other transaction to complete, and will then lock and return the updated row (or no row, if ^^^^^^^^^^^^^^^^^^^^^^ the row was deleted). Was aber passiert, wenn nach dem anderen UPDATE die WHERE Klausel der wartenden Transaktion gar nicht mehr erfüllt ist (in diesem fall wäre die host-Spalte nicht mehr NULL)? Wird dann die "falsche" Zeile (so könnte man die Doku nämlich lesen, was ich aber eigentlich nicht glauben kann), die nächste Zeile oder gar nichts geliefert? Die nächste Zeile, so es noch eine solche gibt, wäre exakt das, was ich bräuchte. Bernd -- No time toulouse[ Auf dieses Posting antworten ]
Antworten
- Frank Seitz (16.10.2009 06:16)
- Andreas 'ads' Scherbaum (16.10.2009 09:16)
- Bernd Nawothnig (16.10.2009 12:42)
- Bernd Nawothnig (16.10.2009 12:28)
- Dominik Echterbruch (16.10.2009 10:25)
- Bernd Nawothnig (16.10.2009 12:52)
- Andreas 'ads' Scherbaum (16.10.2009 13:29)
- Dominik Echterbruch (16.10.2009 14:09)
- Andreas 'ads' Scherbaum (16.10.2009 12:12)
- Claus Reibenstein (16.10.2009 10:30)
- Claus Reibenstein (16.10.2009 10:34)
- Andreas 'ads' Scherbaum (16.10.2009 12:19)
- Bernd Nawothnig (16.10.2009 13:07)
- Andreas 'ads' Scherbaum (16.10.2009 14:19)
