Executando ANALYZE automaticamente no PostgreSQL?

Executando ANALYZE automaticamente no PostgreSQL?

Qual é a maneira mais fácil de executar automaticamente ANALYZE <table>;em um servidor PostgreSQL 12, além de um cronjob?

Eu tenho um aplicativo onde milhões de linhas são inseridas rotineiramente a cada semana e, depois de um mês ou mais, os tempos de consulta tornam-se muito lentos porque as estatísticas estão desatualizadas para as tabelas primárias que estão sendo modificadas. A execução ANALYZE <table>;das tabelas leva alguns minutos e corrige imediatamente os problemas de desempenho, mas acho que deve haver uma configuração que eu possa fazer para que isso possa ser feito automaticamente pelo próprio servidor PG, em vez de manualmente.

Responder1

Parece que você desativou o autovacuum, que, se ativado, analisaria todas as suas tabelas periodicamente para atualizar suas estatísticas para o planejador de consultas.

A solução mais simples é reativar o autovacuum. Verifique seu arquivo postgresql.conf para a configuração de autovacuum.

Responder2

O PostgreSQL possui um autovavuum integrado que deve ser habilitado e configurado para atender às suas necessidades. Normalmente você ajusta *autovacuum_vacuum_threshold * eautovacuum_analyze_thresholdpara iniciar o comportamento desejado com base no número de tuplas alteradas.

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

informação relacionada