Cómo escalar colas en Postgres: lecciones desde los 30.000 flujos por segundo

Fuentes: Making Postgres Queues Scale: Lessons from 30K Workflows per Second

DBOS, una startup centrada en ejecución durable sobre Postgres, explica en este artículo técnico cómo logró escalar sus colas de trabajo respaldadas por Postgres hasta 30.000 ejecuciones de flujos por segundo repartidas entre miles de servidores, desmontando la idea de que este motor no sirve para cargas de colas exigentes. La pieza detalla tres optimizaciones clave. La primera es el uso de la cláusula FOR UPDATE SKIP LOCKED, que permite a múltiples trabajadores seleccionar y bloquear lotes de flujos sin competir entre sí, elevando el techo desde unos 100 flujos por segundo. La segunda consiste en ajustar el nivel de aislamiento transaccional: el nivel REPEATABLE READ, necesario para límites globales de concurrencia, genera errores de serialización por encima de 1.000 extracciones por segundo, mientras que READ COMMITTED elimina esos reintentos en la mayoría de colas. La tercera optimización aborda el coste de los índices: reorganizando el índice principal de extracción para devolver los flujos ya ordenados por prioridad y marca temporal, y convirtiéndolo en un índice parcial limitado al estado ENQUEUED, se elimina la ordenación en cada consulta y se reduce el trabajo de autovacuum. El mismo principio se aplicó a los índices de observabilidad. En conjunto, estas mejoras permiten procesar más de 30.000 flujos por segundo, unos 80.000 millones al mes, manteniendo Postgres como motor de colas.