ANALYZE

Nome

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

Sinopse

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

Descrição

O comando ANALYZE coleta estatísticas sobre o conteúdo das tabelas do banco de dados, e armazena os resultados na tabela do sistema pg_statistic. Posteriormente, o planejador de comandos utiliza estas estatísticas para ajudar a determinar o plano de execução mais eficiente para os comandos.

Sem nenhum parâmetro, o comando ANALYZE analisa todas as tabelas do banco de dados corrente. Com um parâmetro, o comando ANALYZE analisa somente esta tabela. É possível, também, fornecer uma lista de nomes de colunas e, neste caso, somente são coletadas estatísticas para estas colunas.

Parâmetros

VERBOSE
Habilita a exibição das mensagens de progresso.
tabela
O nome (possivelmente qualificado pelo esquema) da tabela a ser analisada. O padrão é analisar todas as tabelas do banco de dados corrente.
coluna
O nome de uma determinada coluna a ser analisada. O padrão é analisar todas as colunas.

Saída

Quando VERBOSE é especificado, o comando ANALYZE emite mensagens de progresso indicando qual tabela está sendo processada no momento. Várias estatísticas sobre as tabelas também são mostradas.

Observações

Aconselha-se executar o comando ANALYZE periodicamente, ou logo após realizar uma alteração importante no conteúdo de uma tabela. Estatísticas precisas auxiliam o planejador na escolha do plano de comando mais apropriado e, portanto, melhoram o tempo do processamento do comando. Uma estratégia habitual é executar VACUUM e ANALYZE uma vez por dia em hora de pouca utilização.

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.

As estatísticas coletadas pelo comando ANALYZE geralmente incluem a lista dos valores mais comuns de cada coluna, e um histograma mostrando a distribuição aproximada dos dados em cada coluna. Estas informações podem ser omitidas se o comando ANALYZE considerá-las sem importância (por exemplo, em uma coluna de 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 estatísticas no Capítulo 21 .

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. Entretanto, deve ser observado que as estatísticas são apenas aproximadas, e mudam um pouco cada vez que o comando ANALYZE é executado, mesmo que o conteúdo da tabela não se altere, podendo provocar pequenas mudanças no custo estimado pelo planejador mostrado pelo comando EXPLAIN. Em situações raras, este não determinismo faz o otimizador de consultas escolher planos diferentes entre execuções do comando ANALYZE. Para evitar esta situação, a quantidade de estatísticas coletada pelo comando ANALYZE deve ser aumentada, conforme descrito abaixo.

A extensão da análise pode ser controlada ajustando o valor da variável de configuração DEFAULT_STATISTICS_TARGET, ou coluna por coluna definindo a quantidade de 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 presentes na 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 planejador contra o tempo gasto para executar o comando ANALYZE e a quantidade de espaço ocupado pela tabela pg_statistic. Em particular, especificar o valor zero desabilita a coleta de estatísticas para a coluna, podendo ser útil em colunas que nunca são usadas como parte das cláusulas WHERE, GROUP BY ou ORDER BY nos comandos, porque as estatísticas para estas colunas nunca são utilizadas pelo planejador.

A quantidade máxima de estatísticas entre as colunas sendo analisadas determina o número de linhas amostradas para preparar as estatísticas. Aumentando a quantidade aumenta proporcionalmente o tempo e espaço necessários para executar o comando ANALYZE.

Compatibilidade

Não existe o comando ANALYZE no padrão SQL.

SourceForge.net Logo