ANALYZE - Amazon Redshift

ANALYZE

Atualiza as estatísticas da tabela para uso pelo planejador de consulta.

Privilégios obrigatórios

A seguir estão os privilégios obrigatórios para ANALYZE:

  • Superusuário

  • Usuários com o privilégio ANALYZE

  • Proprietário da relação

  • Proprietário do banco de dados com o qual a tabela é compartilhada

Sintaxe

ANALYZE [ VERBOSE ] [ [ table_name [ ( column_name [, ...] ) ] ] [ PREDICATE COLUMNS | ALL COLUMNS ]

Parâmetros

VERBOSE

Cláusula que retorna mensagens de informações de andamento sobre a operação ANALYZE. Esta opção é útil quando uma tabela não é especificada.

table_name

É possível analisar tabelas específicas, incluindo tabelas temporárias. É possível qualificar a tabela com o nome do esquema. Como opção, é possível especificar nome_tabela para analisar uma tabela exclusiva. Não é possível especificar mais de um nome_tabela com uma única instrução ANALYZE nome_tabela. Se você não especificar um valor para o table_name, todas as tabelas no banco de dados conectado atualmente são analisadas, incluindo as tabelas persistentes no catálogo do sistema. O Amazon Redshift ignora a análise de uma tabela se a porcentagem de linhas alteradas desde a última ANALYZE for inferior ao limite de análise. Para obter mais informações, consulte Limite de análise.

Não é necessário analisar tabelas de sistema do Amazon Redshift (tabelas STL e STV).

column_name

Se especificar um table_name, você também pode especificar uma ou mais colunas na tabela (como uma lista separada por colunas entre parênteses). Se uma lista de colunas for especificada, somente as colunas listadas serão analisadas.

PREDICATE COLUMNS | ALL COLUMNS

Cláusulas que indicam se ANALYZE deve incluir somente colunas de predicado. Especifique o parâmetro PREDICATE COLUMNS para analisar somente as colunas usadas como predicados em consultas anteriores ou que podem vir a ser usadas como predicados. Especifique ALL COLUMNS para analisar todas as colunas. ALL COLUMNS é o valor padrão.

Uma coluna é incluída no conjunto de colunas de predicado se qualquer das seguintes afirmações for verdadeira:

  • A coluna foi usada em uma consulta como parte de um filtro, condição de junção ou agrupamento por cláusula.

  • A coluna é uma chave de distribuição.

  • A coluna faz parte de uma chave de classificação.

Se nenhuma coluna for marcada como coluna de predicado, por exemplo porque a tabela ainda não foi consultada, todas as colunas serão analisadas mesmo se o parâmetro PREDICATE COLUMNS for especificado. Quando isso acontece, o Amazon Redshift pode responder com uma mensagem, como Nenhuma coluna de predicado encontrada para "table-name". Analisar todas as colunas. Para obter mais informações sobre colunas de predicado, consulte Análise de tabelas.

Observações de uso

O Amazon Redshift executa automaticamente ANALYZE em tabelas criadas com os seguintes comandos:

  • CREATE TABLE AS

  • CREATE TEMP TABLE AS

  • SELECT INTO

Não é possível analisar uma tabela externa.

Não é necessário executar o comando ANALYZE nessas tabelas quando elas são criadas. Se você as modificar, você deve analisá-las da mesma forma que outras tabelas.

Limite de análise

Para reduzir o tempo de processamento e aprimorar a performance geral do sistema, o Amazon Redshift ignorará o comando ANALYZE para uma tabela se a porcentagem de linhas alteradas desde a última vez em que o comando ANALYZE foi executado for inferior ao limite de análise especificado pelo parâmetro analyze_threshold_percent. Por padrão, analyze_threshold_percent é 10. Para alterar a analyze_threshold_percent para a sessão atual, execute o comando SET. O exemplo a seguir altera a analyze_threshold_percent para 20%.

set analyze_threshold_percent to 20;

Para analisar tabelas quando apenas uma quantidade pequena de linhas tiver sido alterada, defina analyze_threshold_percent como um número arbitrariamente pequeno. Por exemplo, se você definir analyze_threshold_percent como 0,01, a tabela com 100.000.000 linhas não será ignorada se pelo menos 10.000 linhas tiverem sido alteradas.

set analyze_threshold_percent to 0.01;

Se o comando ANALYZE ignorar uma tabela porque ela não atende ao limite, o Amazon Redshift retornará a mensagem a seguir.

ANALYZE SKIP

Para analisar todas as tabelas, mesmo se nenhuma linha tiver sido alterada, defina analyze_threshold_percent como 0.

Para visualizar os resultados das operações ANALYZE, consulte a tabela do sistema STL_ANALYZE.

Para obter mais informações sobre a análise de tabelas, consulte Análise de tabelas.

Exemplos

Analisa todas as tabelas no banco de dados TICKIT e retorna informações de andamento.

analyze verbose;

Analise somente a tabela LISTING.

analyze listing;

Analise as colunas VENUEID e VENUENAME na tabela VENUE.

analyze venue(venueid, venuename);

Analise somente colunas de predicado na tabela VENUE.

analyze venue predicate columns;