SKIP LOCKED
SQL-Klausel (FOR UPDATE SKIP LOCKED), die beim Zeilensperren bereits von einer anderen Transaktion gesperrte Zeilen überspringt, statt zu warten. Die Grundlage, um direkt in der Datenbank eine zuverlässige Job-Queue zu bauen — ganz ohne zusätzliches Queue-System.
Das Problem: Mehrere Worker-Prozesse holen sich Jobs aus einer Tabelle. Ohne SKIP LOCKED würden sie entweder auf derselben Zeile kollidieren oder sich anstellen und warten. Mit SELECT ... FOR UPDATE SKIP LOCKED LIMIT 1 nimmt sich jeder Worker den nächsten ungesperrten Job → saubere Parallelität, keine Duplikate, keine Wartezeit. Unterstützt von PostgreSQL (ab 9.5), MySQL (ab 8.0) und Oracle. Anwendungsfall: "Datenbank als Queue" — man erspart sich Redis oder RabbitMQ für einfache Hintergrundjobs. Bibliotheken wie River bauen genau darauf auf. Abwägung: Funktioniert hervorragend bis zu moderater Skalierung; bei extrem hohem Durchsatz braucht es womöglich doch ein dediziertes Queue-System. Oft kombiniert mit einer status-Spalte plus einem Partial Index auf die ausstehenden Zeilen.