Twoja kolejka mogłaby być bardziej zwięzła. Zamiast polegać na wycofywaniu transakcji, możesz to zrobić w jednej instrukcji atomowej bez jawnej transakcji:
UPDATE jobs SET process_id = ? WHERE process_id IS NULL ORDER BY ID ASC LIMIT 1;
Następnie możesz pobierać zadania za pomocą (nawiasy [] oznaczają opcjonalne, w zależności od Twoich danych):
SELECT * FROM jobs WHERE process_id = ? [ORDER BY ID LIMIT 1];