ANALYZE

Name

ANALYZE  --  coleta estatísticas sobre um banco de dados

Synopsis

ANALYZE [ VERBOSE ] [ tabela [ (coluna [, ...] ) ] ]
  

Entradas

VERBOSE

Ativa a exibição de mensagens de progresso.

tabela

O nome de uma tabela específica a ser analisada. Por padrão todas as tabelas.

coluna

O nome de uma coluna específica a ser analisada. Por padrão todas as colunas.

Saídas

ANALYZE

O comando está concluído.

Descrição

O comando ANALYZE coleta estatísticas sobre o conteúdo das tabelas do PostgreSQL, e armazena os resultados na tabela do sistema pg_statistic. Posteriormente, o otimizador de consultas utiliza estas estatísticas para auxiliar na determinação do plano de execução mais eficiente para as consultas.

Sem nenhum parâmetro, o comando ANALYZE analisa todas as tabelas do banco de dados em uso. Com parâmetro, o comando ANALYZE analisa somente uma tabela. É possível ainda fornecer uma relação de nomes de colunas e, neste caso, somente as estatísticas para estas colunas são atualizadas.

Notas

Aconselha-se executar o comando ANALYZE periodicamente, ou logo após realizar uma alteração significativa no conteúdo de uma tabela. Estatísticas precisas auxiliam o otimizador na escolha do plano de consulta mais apropriado e, portanto, a melhorar o tempo do processamento da consulta. Uma estratégia habitual é executar VACUUM e ANALYZE uma vez por dia em períodos de pouca carga.

Ao contrário do comando VACUUM FULL, o comando ANALYZE requer somente um bloqueio de leitura na tabela podendo, portanto, ser executado em conjunto com outras atividades na tabela.

Para tabelas grandes, o comando ANALYZE pega amostras aleatórias do conteúdo da tabela, em vez de examinar todas as linhas. Esta estratégia permite que mesmo tabelas muito grandes sejam analisadas em curto espaço de tempo. Observe, entretanto, que as estatísticas são apenas aproximadas e vão ser um pouco diferentes cada vez que o comando ANALYZE for executado, mesmo que o conteúdo da tabela não se altere, podendo ocasionar pequenas mudanças no custo estimado pelo otimizador mostrado no comando EXPLAIN.

As estatísticas coletadas geralmente incluem a relação dos valores com maior incidência de cada coluna e um histograma mostrando a distribuição aproximada dos dados de cada coluna. Um, ou ambos, podem ser omitidos se o comando ANALYZE considerá-los irrelevantes (por exemplo, em uma coluna com chave única não existem valores repetidos) ou se o tipo de dado da coluna não suportar os operadores apropriados. Existem mais informações sobre as estatísticas no Guia do Usuário.

A extensão da análise pode ser controlada ajustando-se as estatísticas por coluna através do comando ALTER TABLE ALTER COLUMN SET STATISTICS (consulte o comando ALTER TABLE). O valor especificado define o número máximo de entradas da lista de valores com maior incidência e o número máximo de barras no histograma. O valor padrão é 10, mas pode ser ajustado para mais, ou para menos, para balancear a precisão das estimativas do otimizador contra o tempo dispendido para a execução do comando ANALYZE e a quantidade de espaço ocupado pela tabela pg_statistic. Em particular, especificando-se o valor zero desativa a coleta de estatísticas para a coluna, podendo ser útil para colunas que nunca são usadas como parte das cláusulas WHERE, GROUP BY ou ORDER BY das consultas, porque as estatísticas destas colunas não têm utilidade para o otimizador.

O maior número de estatísticas, entre as colunas sendo analisadas, determina o número de linhas amostradas para preparar as estatísticas. Aumentando o número de estatísticas por coluna causa um aumento proporcional no tempo e espaço necessário para executar o comando ANALYZE.

Compatibilidade

SQL92

Não existe o comando ANALYZE no SQL92.