Earlier quoted context omitted.
Is that fixed by the VACUUM process?
No, cause VACUUM can't kill those dead tuples while transaction is still running. Think of it this way... When you open a transaction, you need to have a guarantee that you can touch rows that existed at the moment when transaction has started. You job queue is chugging along and processes let's say a 1000 jobs per minute. Processing a job involves deleting the row from the queue, but since you have a transaction run…
Guess you lose job atomicity that way.