Senior
22
Что такое SKIP LOCKED в PostgreSQL и для чего используется?
Companies where asked
Гос крипта
Answer from AI
sobes.tech AI
В PostgreSQL SKIP LOCKED — это опция для оператора SELECT ... FOR UPDATE или FOR SHARE, которая позволяет пропускать строки, уже заблокированные другими транзакциями. Это полезно для реализации конкурентной обработки задач, когда несколько воркеров выбирают записи из таблицы для обработки.
Без SKIP LOCKED запрос будет ждать освобождения блокировки, что может привести к блокировкам и задержкам. С SKIP LOCKED запрос сразу пропускает заблокированные строки и выбирает только доступные, что повышает параллелизм.
Пример:
BEGIN;
SELECT * FROM tasks WHERE status = 'pending' FOR UPDATE SKIP LOCKED LIMIT 1;
-- обработка задачи
COMMIT;
Таким образом, несколько воркеров могут одновременно брать разные задачи из таблицы, не блокируя друг друга.