¿Ejecutar automáticamente ANALYZE en PostgreSQL?

¿Ejecutar automáticamente ANALYZE en PostgreSQL?

¿Cuál es la forma más sencilla de ejecutar automáticamente ANALYZE <table>;en un servidor PostgreSQL 12, además de un cronjob?

Tengo una aplicación en la que se insertan rutinariamente millones de filas cada semana y, después de aproximadamente un mes, los tiempos de consulta se vuelven muy lentos porque las estadísticas de las tablas principales que se modifican están desactualizadas. La ejecución ANALYZE <table>;de las tablas lleva un par de minutos y soluciona inmediatamente los problemas de rendimiento, pero creo que tiene que haber una configuración que pueda realizar para que el servidor PG pueda hacerlo automáticamente en lugar de hacerlo manualmente.

Respuesta1

Parece que tiene el vacío automático deshabilitado, que si estuviera habilitado analizaría todas sus tablas periódicamente para actualizar sus estadísticas para el planificador de consultas.

La solución más sencilla es volver a habilitar el vacío automático. Verifique su archivo postgresql.conf para conocer la configuración de vacío automático.

Respuesta2

PostgreSQL tiene un autovavuum incorporado que debe habilitarse y configurarse para satisfacer sus necesidades. Normalmente ajustas *autovacuum_vacuum_threshold * yautovacuum_analyze_thresholdpara iniciar el comportamiento deseado en función del número de tuplas modificadas.

Verhttps://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM

información relacionada