Lessico IT › Database › SKIP LOCKED

SKIP LOCKED

Database Svenska → Aggiornato: 2026-10-02

Una clausola SQL (FOR UPDATE SKIP LOCKED) che, nel bloccare le righe, salta quelle già bloccate da un'altra transazione invece di attendere. È la base per costruire una coda di job affidabile direttamente nel database, senza un sistema di code a parte.

Il problema: più processi worker prelevano job da una tabella. Senza SKIP LOCKED o si scontrerebbero sulla stessa riga, o si metterebbero in fila ad aspettare. Con SELECT ... FOR UPDATE SKIP LOCKED LIMIT 1 ogni worker prende il prossimo job non bloccato: parallelismo pulito, niente duplicati, niente attese. Supportato da PostgreSQL (9.5+), MySQL (8.0+) e Oracle. Uso tipico: il «database come coda», per evitare di introdurre Redis o RabbitMQ per semplici job in background. Librerie come River si basano su questo meccanismo. Limite: funziona benissimo fino a una scala moderata; a throughput estremi può servire un sistema di code dedicato. Spesso si abbina a una colonna status e a un indice parziale sulle righe in attesa.

← Torna al lessico