Problema
Los cambios en una tabla (normalmente pequeños) son lo suficientemente frecuentes como para que los planes del optimizador se vuelvan ineficientes y afecten significativamente, y de forma negativa, a las consultas realizadas en dichas tablas.
Solución
La solución más extrema (que implica que cualquier actualización de una fila inducirá a autovacuum a analizar la tabla) es configurar los dos parámetros siguientes:
ALTER TABLE table
SET (autovacuum_analyze_threshold = 0);
ALTER TABLE table
SET (autovacuum_analyze_scale_factor = 0.01);
Sin embargo, en la práctica, la mayoría de las implementaciones requerirán umbrales un poco más holgados para todo lo que no sean tablas pequeñas y con gran carga de trabajo que deban ser vaciadas constantemente.
Los valores de autovacuum_analyze_threshold
o autovacuum_analyze_scale_factor
pueden incrementarse de forma adecuada al permitir que se produzcan cambios en más de una fila antes de inducir un análisis.
Al realizar los ajustes por tabla, se evita la sobrecarga excesiva de autovacuum al escanear otras tablas de menor importancia o de mayor tamaño con demasiada frecuencia. Las ejecuciones excesivas de autovacuum tienen repercusiones considerables en el rendimiento.
Causa del problema
Los parámetros predefinidos de autovacuum no son adecuados para tablas pequeñas en las que se realizan cambios frecuentes con el fin de garantizar que las estadísticas estén actualizadas sin que los planes del optimizador se vean afectados.