Configurar los parámetros de autovacuum para un análisis frecuente de las tablas

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.