Devemos executar ANALYZE myview;
em uma visão materializada do PostgreSQL 9.6+ depois de executar um REFRESH MATERIALIZED VIEW CONCURRENTLY myview;
?
Ou é inútil (talvez as estatísticas do índice já estejam atualizadas na atualização?)
Devemos executar ANALYZE myview;
em uma visão materializada do PostgreSQL 9.6+ depois de executar um REFRESH MATERIALIZED VIEW CONCURRENTLY myview;
?
Ou é inútil (talvez as estatísticas do índice já estejam atualizadas na atualização?)
As estatísticas da tabela não são atualizadas automaticamente.
Eles permanecem inalterados se atualizados com a
CONCURRENTLY
opção.Sem
CONCURRENTLY
, um novo arquivo é gravado para a tabela e as contagens básicasrelpages
ereltuples
no catálogo do sistemapg_class
são consequentemente redefinidas para0
. As estatísticas da tabela (por coluna)pg_statistic
ainda permanecem inalteradas.Fiz um teste rápido no Postgres 9.6 para confirmar.
Em alguns casos (onde os planos de consulta não dependem muito das estatísticas atuais), você pode querer economizar tempo e não executar
ANALYZE
nada. Em todos os outros casos você vai querer/precisar agendar um manualANALYZE myview;
logo após oREFRESH
. Ou você espera até que o autovacuum entre em ação, o que só acontece se linhas suficientes forem alteradas (CONCURRENTLY
na verdade, executa comandos DML no MV para afetar apenas as linhas alteradas).