Возможно, конечно, в PostgreSQL этот запрос не будет пытаться залочить одни и те же строки, а будет как-то более грамотно (как?) сериализовать доступ к таблице, но тогда мне об этом интересно было бы послушать, т.к. очередями на базах данных я занимался довольно много в своей жизни :).
Там, конечно, ставится блокировка. Но при skip locked сериализации не происходит, берется следующая свободная.
У меня на дешевом железе получалось до 2000 TPS по 10ms.
Количество коннекций важно и если обработка события долгая и в транзакции (а ради транзакции это и имеет смысл городить), то постгрессу плохо. Но заметим, что даже 100 процессов по 10ms - это 10K tps