Postgres 19 introduce módulos de 'consejos de plan' tras dos décadas de rechazo a los hints de consulta

Fuentes: Looking Forward to Postgres 19: Query Hints
Imagen generada por IA con el prompt: Editorial illustration of a vintage scroll unfurling on a desk beside a glowing database server, gears and query plan diagrams floating above, dramatic studio lighting, muted blue and amber tones
Imagen generada con IA

El congelado de características de PostgreSQL 19 incluye dos nuevos módulos contrib, pg_plan_advice y pg_stash_advice, que ofrecen por primera vez en la historia del proyecto una vía oficial para influir en las decisiones del planificador de consultas. La comunidad de Postgres rechazó durante más de veinte años los hints al estilo Oracle, recogidos en una página wiki que desgranaba seis motivos: problemas de mantenimiento, rotura tras actualizaciones, sustitución del análisis de causa raíz, escasa escalabilidad, fe excesiva en el optimizador y desincentivo de las mejoras del planificador.

El cambio de postura llega de la mano de Robert Haas, protagonista desde 2010 de los debates sobre el tema en la lista pgsql-performance, y se materializa en un mecanismo bautizado como "plan advice" en lugar de hints. Los consejos se definen mediante un GUC o un repositorio asociado al identificador de la consulta, nunca dentro del texto SQL, lo que responde a la objeción clásica de Josh Berkus. El sistema no reemplaza al planificador: reduce su espacio de búsqueda y, si el consejo es incorrecto, marca los nodos afectados como Disabled y recurre a la mejor alternativa viable. Además, EXPLAIN con la opción PLAN_ADVICE devuelve la cadena de advice que reproduce el plan actual, de modo que el propio motor sugiere cómo guiarse. La sintaxis cubre métodos de acceso, orden de joins, tipos de join y opciones como DO_NOT_SCAN, pensadas como último recurso para casos extremos que ni estadísticas ni GUCs de coste logran resolver.