Por que o Amazon Redshift executa o processo COPY ANALYZE quando STATUPDATE está desativado?

3 minuto de leitura
0

Tentei usar o comando COPY para carregar dados em uma nova tabela no Amazon Redshift. Até mesmo adicionei o parâmetro COMPUPDATE OFF. Por que COPY ANALYZE ainda está em execução?

Breve descrição

Antes de criar uma tabela no Amazon Redshift, selecione o estilo de distribuição dessa tabela. Se uma tabela não especificar um estilo de distribuição, ela assumirá como padrão a distribuição AUTO. Em seguida, o recurso de distribuição AUTO do Amazon Redshift usa o processo COPY ANALYZE para determinar se a tabela deve usar a distribuição EVEN ou ALL.

Observação: o parâmetro COMPUPDATE OFF ainda executa COPY ANALYZE em tabelas usando um estilo de distribuição AUTO. O parâmetro STATUPDATE OFF não desativa nem reprime o comando COPY ANALYZE.

Resolução

1.    Verifique o estilo de distribuição atual de uma tabela executando SHOW TABLE:

SHOW TABLE [schema_name.]table_name

Observação: por padrão, o Amazon Redshift aplica a distribuição AUTO se um estilo de distribuição não é especificado na instrução CREATE TABLE.

2.    Se a distribuição AUTO estiver ativada, crie uma tabela com um estilo de distribuição definido. A especificação de um estilo de distribuição impede a execução de COPY ANALYZE.

O exemplo a seguir especifica um estilo de distribuição EVEN:

create table rs_example_test (id int)diststyle even;

Para mais informações sobre estilos de distribuição, consulte Trabalhar com estilos de distribuição de dados.

3.    Use o comando COPY para carregar os dados em sua tabela e, em seguida, anexá-los aos parâmetros STATUPDATE OFF.

Observação: a prática recomendada é usar o comando COPY para carregar grandes quantidades de dados, em vez de usar instruções INSERT individuais. Isso minimiza o risco de problemas de performance.

4.    Execute uma consulta na tabela do sistema SVL_STATEMENTTEXT, e, em seguida, filtre pelo ID (PID) do processo relacionado a sua sessão:

select userid, xid, pid, trim(label) as label, starttime, endtime, sequence, trim(type) as type, left(text,60) text from svl_statementtext where pid = 26815 order by xid, starttime, sequence;

A sintaxe acima verifica se COPY ANALYZE foi executado como parte da transação COPY.

A saída será semelhante ao seguinte:

userid      xid            pid    label      starttime            endtime               sequence     type      text
100       78915    26815   default      2019-03-19  14:06:19    2019-03-19 14:06:21   0             QUERY      copy rs_test3 from 's3://xxxxx-rs-log/AWSLogs/rs_test2.csv'\
100       78915    26815   default      2019-03-19  14:06:21    2019-03-19 14:06:21   0             UTILITY  COMMIT

Isso confirma que COPY ANALYZE não é mais executado como parte da transação COPY.


Informações relacionadas

Use uma tabela de preparação para executar uma mesclagem (upsert)

AWS OFICIAL
AWS OFICIALAtualizada há um ano