Leksykon IT › Bazy danych › SKIP LOCKED

SKIP LOCKED

Bazy danych Svenska → Zaktualizowano: 2026-10-07

Klauzula SQL (FOR UPDATE SKIP LOCKED), która przy blokowaniu wierszy pomija wiersze już zablokowane przez inną transakcję zamiast czekać. Fundament niezawodnej kolejki zadań budowanej wprost w bazie, bez dodatkowego systemu kolejkowego.

Problem: kilka procesów roboczych pobiera zadania z tabeli. Bez SKIP LOCKED albo zderzą się na tym samym wierszu, albo ustawią w kolejce i będą czekać. Z SELECT ... FOR UPDATE SKIP LOCKED LIMIT 1 każdy worker bierze następne niezablokowane zadanie → czysta równoległość, brak duplikatów, brak czekania. Obsługują to PostgreSQL (9.5+), MySQL (8.0+) i Oracle. Zastosowanie: „baza jako kolejka” — unikanie wciągania Redisa/RabbitMQ do prostych zadań w tle. Biblioteki takie jak River się na tym opierają. Kompromis: świetnie działa do umiarkowanej skali; przy ekstremalnej przepustowości może być potrzebny dedykowany system kolejek. Często łączone z kolumną status i indeksem częściowym na oczekujących wierszach.

← Wróć do leksykonu