Melhores Práticas de Estatísticas
A qualidade do planejador depende de estatísticas atualizadas. Trate ANALYZE como parte de toda migração de dados e revisão de performance no PostgreSQL 18.4.
Como Usar Esta Lista
- Execute após
DMLem massa antes de indexar benchmarks. - Combine com verificações de linhas estimadas vs. reais do
EXPLAIN. - Documente estatísticas estendidas em PRs de migração quando adicionadas.
A - Cadência de Atualização
-
ANALYZEmanual apósCOPYem massa, purgas de exclusão ou backfills. O autoanalyze pode ter um atraso de horas. - Analise novas partições quando anexadas. Estatísticas vazias enganam a poda.
- Reanalise após
CREATE INDEX CONCURRENTLYem tabelas enormes. Confirme que o planejador o seleciona. - Monitore
n_mod_since_analyzeem tabelas quentes. Alerte antes que os planos se deteriorem. - Inclua a etapa de análise nos runbooks de ETL. Último job antes da abertura do BI.
B - Profundidade e Correlação
- Aumente o alvo de
STATISTICSapenas em colunas com distribuição comprovadamente enviesada. Não globalmente por padrão. - Adicione estatísticas estendidas para filtros
ANDcorrelacionados. dependências ou ndistinct, conforme apropriado. - Crie estatísticas de expressão para predicados de relatórios imutáveis.
date_trunc,loweronde indexado. - Valide com
pg_statse EXPLAIN antes/depois. Prove as correções de estimativa. - Remova estatísticas estendidas não utilizadas para encurtar a análise. Auditoria periódica do catálogo.
C - Segurança Operacional
- Nunca desabilite autovacuum/analyze globalmente. Ajuste por tabela em vez disso.
- Agende
analyzepesado fora do horário de pico, quando possível. Tabelas grandes ainda são amostradas intensamente. - Mantenha estatísticas em repositórios de migração lógicos.
CREATE STATISTICSé um esquema. - Teste planos como roles de aplicação com GUCs de produção.
random_page_costem nível de role importa. - Snapshot de dados mascarados em escala de produção para revisão de planos. Bancos de dados de desenvolvimento vazios mentem.
D - Processo da Equipe
- Rejeite PRs de índice sem planos pós-análise. Evite falsos negativos.
- Rastreie regressões de planos em CI com baselines JSON EXPLAIN. Detecção de deriva de estatísticas.
- Documente suposições de enviesamento de tenant em ADRs. Pares de índices parciais mais estatísticas.
- Treine equipes de aplicação: deploy de ORM != análise. Alteração de dados aciona notificação do DBA.
- Revise
pg_stat_user_tablesmensalmente nas 20 principais tabelas. Higiene operacional.
FAQs
Quanto tempo após o ETL para analisar?
Antes que qualquer tráfego de usuário ou BI atinja os novos dados.O alvo de estatísticas padrão é suficiente?
Frequentemente para colunas uniformes; raramente para enums de status com enviesamento.Analisar todas as colunas vs. algumas?
Alvo de colunas alteradas ou enviesadas para economizar tempo.Estatísticas de standby?
Réplicas herdam estatísticas primárias; a análise é executada na primária.Segurança do pg_stats?
Pode revelar distribuição; restrinja ambientes sensíveis.Fator de escala de análise do autovacuum?
Menor em tabelas de fatos quentes (0.01-0.02).Quando estatísticas estendidas são obrigatórias?
Quando filtros `AND` estimam incorretamente por ordens de magnitude após a análise.Autovacuum na nuvem?
Existem predefinições gerenciadas; ainda ajuste por tabela para fatos.Histograma vs. índice?
Estatísticas guiam planos; índices habilitam caminhos.Próxima seção?
Manutenção de design de índice para estruturas físicas que as estatísticas devem usar.Relacionados
- Noções Básicas de Estatísticas - Fundamentos do catálogo
- ANALYZE & Autoanalyze - Timing
- Estatísticas Estendidas - Ferramentas de correlação
- Melhores Práticas de EXPLAIN - Captura de plano
Versões do Stack: Esta página foi escrita para PostgreSQL 18.4 (estável 18, manutenção 17), pgvector 0.8+, PgBouncer 1.x, Patroni 3.x e PostGIS 3.5+.