

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Práticas recomendadas para projetar tabelas do Amazon Redshift
<a name="best-practices-tables"></a>

Esta seção fornece uma visão geral das práticas recomendadas para projetar tabelas de bancos de dados. Recomendamos que você siga essas práticas recomendadas para obter performance e eficiência ideais das consultas.

## Entenda como as chaves de classificação funcionam
<a name="sort-keys"></a>

O Amazon Redshift armazena seus dados no disco em ordem classificada de acordo com a chave de classificação. O otimizador de consulta Amazon Redshift usa a ordem de classificação quando determina os planos de consulta ideais. Para usar as chaves de classificação de forma eficaz, é recomendável fazer o seguinte:
+ Mantenha a tabela organizada o máximo possível.
+ Use oa classificação `VACUUM` para restaurar a performance ideal.
+ Evite compactar a coluna da chave de classificação.
+ Se a chave de classificação estiver compactada e se a proporção `sortkey1_skew` for significativamente alta, recrie a tabela sem habilitar a compactação na chave de classificação.
+ Evite aplicar uma função às colunas da chave de classificação. Por exemplo, na consulta abaixo, a coluna da chave de classificação `trans_dt : TIMESTAMPTZ` não será usada se você convertê-la em `DATE`:

  ```
  select order_id, order_amt
  from sales
  where trans_dt::date = '2021-01-08'::date
  ```
+ Execute operações `INSERT` por ordem de chave de classificação.
+ Use as chaves de classificação na cláusula `GROUP BY` quando possível.

### Dicas de ajuste da consulta
<a name="tuning-tips"></a>

Recomendamos que você faça o seguinte ao ajustar suas consultas:
+ Sempre ordene as chaves de classificação compostas da cardinalidade mais baixa para a cardinalidade mais alta para obter a eficácia ideal.
+ Se a chave principal em uma chave de classificação composta for relativamente exclusiva (ou seja, tiver alta cardinalidade), evite adicionar colunas adicionais à sua chave de classificação. A adição de colunas extras tem pouco impacto na performance da consulta, mas aumenta os custos de manutenção.

## Avaliar a eficácia da chave de classificação
<a name="sort-key-effectiveness"></a>

Para otimizar suas consultas, você deve ser capaz de avaliar a eficácia de suas consultas. Recomendamos usar a visualização [SVL\$1QUERY\$1SUMMARY](https://docs.aws.amazon.com/redshift/latest/dg/r_SVL_QUERY_SUMMARY.html) para encontrar informações gerais sobre a execução de uma consulta. Nessa exibição, você pode usar o atributo `IS_RRSCAN` para determinar se uma etapa do plano `EXPLAIN` usa uma verificação restrita por intervalo. Você também pode usar o atributo `rows_pre_filter` para determinar a seletividade de uma chave de classificação.

Você também pode usar uma visualização de administrador do GitHub chamada [v\$1my\$1last\$1query\$1summary](https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_my_last_query_summary.sql). A visualização exibe informações sobre a última consulta executada.

A instrução a seguir mostra como encontrar informações gerais sobre a execução de uma consulta.

```
select lpad(' ',stm+seg+step) || label as label, 
       rows, 
       bytes, 
       is_diskbased, 
       is_rrscan, 
       rows_pre_filter 
from svl_query_summary 
where query = pg_last_query_id() 
order by stm, seg, step;
```

A consulta anterior retorna a saída de exemplo a seguir.



![\[Exemplo de saída da consulta anterior.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/query-best-practices-redshift/images/query-output.png)


## Conhecer sua tabela
<a name="know-table"></a>

É importante entender as propriedades críticas da sua tabela. Para saber mais sobre sua tabela, faça o seguinte:
+ Use [PG\$1TABLE\$1DEF](https://docs.aws.amazon.com/redshift/latest/dg/r_PG_TABLE_DEF.html) para visualizar informações sobre as colunas da tabela.
+ Use [SVV\$1TABLE\$1INFO](https://docs.aws.amazon.com/redshift/latest/dg/r_SVV_TABLE_INFO.html) para visualizar informações mais abrangentes sobre uma tabela, incluindo a distorção na distribuição de dados, a distorção na distribuição de chaves, o tamanho da tabela e as estatísticas.

## Escolher o estilo certo de distribuição de tabelas
<a name="distribution-style"></a>

Quando você executa uma consulta, o otimizador de consulta redistribui as linhas aos nós de computação conforme necessário para executar junções e agregações. O objetivo na seleção de um estilo de distribuição da tabela é minimizar o impacto da etapa de redistribuição colocando os dados no local em que eles precisam estar antes que a consulta seja executada. 

Recomendamos a seguinte abordagem para escolher o estilo correto de distribuição de tabelas:
+ Evite a transmissão e a redistribuição em um plano de execução de consultas colocando as linhas no mesmo nó. Por exemplo, ao selecionar um `DISTKEY`, você pode distribuir a tabela de fatos e a tabela unidimensional em suas colunas comuns. Escolha a maior dimensão com base no tamanho do conjunto de dados filtrado. Como somente as linhas que são usadas na junção precisam ser distribuídas, considere o tamanho do conjunto de dados após a filtragem e não apenas o tamanho da tabela.
+ Verifique se não há distorção na coluna em que a chave de distribuição foi criada. Caso contrário, um nó de computação poderá realizar mais trabalho pesado do que outros. Se você notar alguma distorção, considere alterar a coluna da chave de distribuição. Uma coluna poderá ser considerada candidata a uma chave de distribuição se seus valores forem distribuídos uniformemente ou se forem valores cardinais altos.
+ Se a tabela usada na condição de junção for pequena (menos de 1 GB), considere o estilo de distribuição `ALL`.
+ Você pode compactar a chave de distribuição, mas deve evitar compactar a coluna da chave de classificação (especialmente a primeira coluna da chave de classificação).

**nota**  
Se você usa a otimização automática de tabelas, não é necessário escolher o estilo de distribuição da sua tabela. Para obter mais informações, consulte [Working with automatic table optimization](https://docs.aws.amazon.com/redshift/latest/dg/t_Creating_tables.html) na documentação do Amazon Redshift. Para que o Amazon Redshift escolha o estilo de distribuição apropriado, especifique `AUTO` para o estilo de distribuição.