

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á.

# Fatores de performance das consultas do Amazon Redshift
<a name="query-performance-factors"></a>

Inúmeros fatores podem afetar a performance da consulta. Os seguintes aspectos de suas operações de dados, clusters e bancos de dados desempenham um papel na velocidade do processamento de suas consultas.
+ [Propriedades da tabela](#table-properties)
  + [Chaves de classificação](#table-sort-keys) (Amazon Redshift Advisor)
  + [Compactação de dados](#data-compression) (automatizado)
  + [Distribuição de dados](#data-distribution) (automatizado)
  + [Manutenção de tabelas](#table-maintenance) (automatizado)
+ [Configuração do cluster](#cluster-configuration)
  + [Tipo de nó](#node-type)
  + [Tamanho do nó, número de nós e fatias](#node-size)
  + [Gerenciamento do workload](#workload-management) (automatizado)
  + [Aceleração de consulta breve](#sqa) (automatizado)
+ [Consulta SQL](#query)
  + [Estrutura de consultas](#query-structure)
  + [Compilação de código](#code-compilation)

## Propriedades da tabela
<a name="table-properties"></a>

As tabelas do Amazon Redshift são as unidades fundamentais para armazenar dados no Amazon Redshift, e cada tabela tem um conjunto de propriedades que determinam seu comportamento e acessibilidade. Essas propriedades incluem classificação, estilo de distribuição, codificação de compactação e muitas outras. Compreender essas propriedades é crucial para otimizar a performance, a segurança e a economia das tabelas do Amazon Redshift.

### Chaves de classificação
<a name="table-sort-keys"></a>

O Amazon Redshift armazena dados no disco em uma ordem classificada de acordo com as chaves de classificação da tabela. O otimizador de consultas e o processador de consultas usam as informações sobre onde os dados estão localizados dentro de um nó de computação para reduzir o número de blocos que devem ser verificados. Isso melhora significativamente a velocidade das consultas ao reduzir a quantidade de dados a serem processados. Recomendamos que você use chaves de classificação para facilitar os filtros na cláusula `WHERE`. Para obter mais informações, consulte [Trabalhar com chaves de classificação](https://docs.aws.amazon.com/redshift/latest/dg/t_Sorting_data.html) na documentação do Amazon Redshift.

### Compactação de dados
<a name="data-compression"></a>

A compactação de dados reduz os requisitos de armazenamento, o que reduz o disco I/O e melhora o desempenho das consultas. Quando você executa uma consulta, os dados compactados são lidos para a memória e depois são descompactados durante a execução da consulta. Carregar menos dados na memória permite que o Amazon Redshift aloque mais memória para analisar os dados. Como o armazenamento colunar armazena dados semelhantes sequencialmente, o Amazon Redshift é capaz de aplicar codificações de compactação adaptáveis especificamente vinculadas a tipos de dados colunares. A melhor maneira de habilitar a compactação de dados nas colunas da tabela é usar a opção `AUTO` no Amazon Redshift para aplicar as codificações de compactação ideais ao carregar a tabela com dados. Para saber mais sobre o uso da compactação automática de dados, consulte [Carregamento de tabelas com compactação automática](https://docs.aws.amazon.com/redshift/latest/dg/c_Loading_tables_auto_compress.html) na documentação do Amazon Redshift.

### Distribuição de dados
<a name="data-distribution"></a>

O Amazon Redshift armazena dados nos nós de computação de acordo com o estilo de distribuição da tabela. Quando você executa uma consulta, o otimizador de consulta redistribui os dados aos nós de computação conforme necessário para executar junções e agregações. A escolha do estilo correto de distribuição para uma tabela ajuda a minimizar o impacto das etapas de redistribuição ao localizar os dados onde eles devem estar antes que as junções sejam executadas. Recomendamos que você use chaves de distribuição para facilitar as junções mais comuns. Para obter mais informações, consulte [Working with data distribution styles](https://docs.aws.amazon.com/redshift/latest/dg/t_Distributing_data.html) na documentação do Amazon Redshift.

### Manutenção de tabelas
<a name="table-maintenance"></a>

Embora o Amazon Redshift ofereça performance líder pronta para uso para a maioria dos workloads, manter os clusters do Amazon Redshift funcionando bem exige manutenção. A atualização e a exclusão de dados criam linhas inativas que devem ser limpas, e até mesmo tabelas somente anexação deverão ser reclassificadas se a ordem de anexação não for consistente com a chave de classificação.

#### Vácuo
<a name="vacuum"></a>

O processo de limpeza no Amazon Redshift é essencial para a integridade e a manutenção do seu cluster do Amazon Redshift. Isso também afeta a performance das consultas. Como as exclusões e atualizações sinalizam os dados antigos, mas na verdade não os removem, você deve usar a limpeza para recuperar o espaço em disco ocupado pelas linhas da tabela que foram marcadas para exclusão pelas operações `UPDATE` e `DELETE` anteriores. O Amazon Redshift pode classificar e executar automaticamente uma operação `VACUUM DELETE` nas tabelas em segundo plano.

Para limpar tabelas após um carregamento ou uma série de atualizações incrementais, você também pode executar o comando `VACUUM` no banco de dados inteiro ou em tabelas individuais. Se as tabelas tiverem chaves de classificação e as cargas da tabela não estiverem otimizadas para serem classificadas à medida que são inseridas, você deverá usar comandos vacuum para reutilizar os dados (o que pode ser crucial para a performance). Para obter mais informações, consulte [Vacuum de tabelas](https://docs.aws.amazon.com/redshift/latest/dg/t_Reclaiming_storage_space202.html) na documentação do Amazon Redshift.

#### Analyze
<a name="analyze"></a>

A operação `ANALYZE` atualiza os metadados estatísticos nas tabelas em um banco de dados do Amazon Redshift. Manter as estatísticas atualizadas melhora a performance das consultas, permitindo que o planejador de consultas escolha os planos ideais. O Amazon Redshift monitora continuamente seu banco de dados e executa automaticamente as operações de análise em segundo plano. Para minimizar o impacto na performance do sistema, a operação `ANALYZE` é executada automaticamente durante os períodos em que os workloads estão leves. Se você optar por executar `ANALYZE` explicitamente, faça o seguinte:
+ Execute o comando `ANALYZE` antes de executar consultas.
+ Execute o comando `ANALYZE` nos bancos de dados de forma rotineira ao final de cada ciclo regular de carregamento ou atualização.
+ Execute o comando `ANALYZE` nas tabelas novas que você criar e nas tabelas ou colunas existentes que sofreram alterações significativas.
+ Considere executar operações `ANALYZE` em diferentes agendamentos para os diferentes tipos de tabelas e colunas, dependendo de seu uso em consultas e de sua propensão a alterações.
+ Para economizar tempo e recursos do cluster, use a cláusula `PREDICATE COLUMNS` ao executar `ANALYZE`.

## Configuração do cluster
<a name="cluster-configuration"></a>

Um cluster é uma coleção de nós que realizam o armazenamento e o processamento reais dos dados. Configurar seu cluster do Amazon Redshift da maneira correta é fundamental se quiser alcançar o seguinte:
+ Alta escalabilidade e simultaneidade
+ Uso eficiente do Amazon Redshift
+ Melhor performance
+ Custo mais baixo

### Tipo de nó
<a name="node-type"></a>

Um cluster do Amazon Redshift pode usar um dos vários tipos de nós (RA3 DC2, e DS2). Cada tipo de nó oferece diferentes tamanhos e limites para ajudá-lo a escalar seu cluster adequadamente. O tamanho do nó determina a capacidade de armazenamento, memória, CPU e preço de cada nó no cluster. A otimização de custos e performance começa com a escolha do tipo e tamanho corretos do nó. Para obter mais informações sobre tipos de nós, consulte [Overview of Amazon Redshift clusters](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#working-with-clusters-overview) na documentação do Amazon Redshift.

### Tamanho do nó, número de nós e fatias
<a name="node-size"></a>

Um nó de computação é particionado em fatias. Mais nós significa mais processadores e mais fatias, o que possibilita que suas consultas sejam processadas de forma mais rápida executando partes da consulta simultaneamente entre as fatias. No entanto, mais nós também significa maiores despesas. Isso significa que você deve encontrar o equilíbrio entre custo e a performance mais apropriada para seu sistema. Para obter mais informações sobre a arquitetura de clusters do Amazon Redshift, consulte [Arquitetura de sistema do data warehouse](https://docs.aws.amazon.com/redshift/latest/dg/c_high_level_system_architecture.html) na documentação do Amazon Redshift.

### Gerenciamento do workload
<a name="workload-management"></a>

O gerenciamento de workloads (WLM) do Amazon Redshift permite que os usuários gerenciem com flexibilidade as filas de workloads com prioridades para que consultas curtas e de execução rápida não fiquem presas em filas atrás de consultas de longa duração. O WLM automático usa algoritmos de machine learning (ML) para criar perfis de consultas e colocá-las na fila apropriada com os recursos adequados, enquanto gerencia a simultaneidade de consultas e a alocação de memória. Para obter mais informações sobre WLM, consulte [Implementing workload management](https://docs.aws.amazon.com/redshift/latest/dg/cm-c-implementing-workload-management.html) na documentação do Amazon Redshift.

### Aceleração de consulta breve
<a name="sqa"></a>

A aceleração de consultas curtas (SQA) prioriza as consultas de curta execução em relação às consultas de execução demorada. A SQA executa consultas em um espaço dedicado para que as consultas SQA não sejam forçadas a esperar em filas atrás de consultas mais demoradas. O SQA apenas prioriza consultas que são de execução curta e estão em uma fila definida pelo usuário. Se usar a SQA, as consultas de execução rápida serão iniciadas com mais rapidez e os usuários verão os resultados em menos tempo. Se você habilitar a SQA, poderá reduzir ou eliminar as filas de WLM que são dedicadas à execução de consultas rápidas. Além disso, as consultas de execução longa não precisam disputar slots em uma fila do WLM. Isso significa que você pode configurar suas filas do WLM para usar menos slots de consulta. Quando você usa um nível de simultaneidade menor, o throughput de consultas aumenta e a performance geral do sistema melhora na maioria das workloads. Para obter mais informações sobre SQA, consulte [Working with short query acceleration](https://docs.aws.amazon.com/redshift/latest/dg/wlm-short-query-acceleration.html) na documentação do Amazon Redshift.

## Consulta SQL
<a name="query"></a>

Uma consulta de banco de dados é uma solicitação de dados de um banco de dados. A solicitação deve vir em um cluster do Amazon Redshift usando SQL. O Amazon Redshift oferece suporte a ferramentas do cliente SQL que se conectam por meio de Java Database Connectivity (JDBC) e Open Database Connectivity (ODBC). Você pode usar a maioria das ferramentas do cliente SQL que oferecem suporte aos drivers do JDBC ou do ODBC.

### Estrutura de consultas
<a name="query-structure"></a>

Como a sua consulta é escrita afeta sua performance. Recomendamos que você escreva consultas para processar e retornar o mínimo de dados necessários para atender às suas necessidades. Para obter mais informações sobre como estruturar suas consultas, consulte a seção [Práticas recomendadas para criar consultas do Amazon Redshift](best-practices-designing-queries.md) deste guia.

### Compilação de código
<a name="code-compilation"></a>

O Amazon Redshift gera e compila código otimizado para cada plano de execução de consulta. O código compilado é executado mais rápido porque elimina a sobrecarga de usar um interpretador. *Para minimizar a latência de novas consultas e, ao mesmo tempo, preservar os benefícios de desempenho do código compilado, o Amazon Redshift usa uma técnica chamada composição.* A composição gera um arranjo leve de lógica preexistente para processar novas consultas imediatamente e, ao mesmo tempo, compilar código altamente otimizado e específico da consulta em segundo plano. Isso remove a compilação do caminho crítico de execução da consulta. Isso significa que as novas consultas são iniciadas mais rapidamente e oferecem desempenho consistente com as execuções subsequentes.

O Amazon Redshift também usa um serviço de compilação sem servidor para escalar compilações de consultas além dos recursos computacionais de um cluster do Amazon Redshift. Os segmentos de código compilado são armazenados em cache localmente no cluster e em um cache remoto praticamente ilimitado que persiste após a reinicialização do cluster. As execuções subsequentes da mesma consulta são mais rápidas porque podem pular a fase de compilação. Ao usar um serviço de compilação escalável, o Amazon Redshift compila código em paralelo para fornecer desempenho consistentemente rápido.