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
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.
-
-
Chaves de classificação (Amazon Redshift Advisor)
-
Compactação de dados (automatizado)
-
Distribuição de dados (automatizado)
-
Manutenção de tabelas (automatizado)
-
-
-
Gerenciamento do workload (automatizado)
-
Aceleração de consulta breve (automatizado)
Propriedade das tabelas
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
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 na documentação do Amazon Redshift.
Compactação de dados
A compactação de dados reduz os requisitos de armazenamento, o que diminui a E/S de disco e melhora a performance 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 na documentação do Amazon Redshift.
Distribuição de dados
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 na documentação do Amazon Redshift.
Manutenção de tabelas
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
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 na documentação do Amazon Redshift.
Analise
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
ANALYZEantes de executar consultas. -
Execute o comando
ANALYZEnos bancos de dados de forma rotineira ao final de cada ciclo regular de carregamento ou atualização. -
Execute o comando
ANALYZEnas tabelas novas que você criar e nas tabelas ou colunas existentes que sofreram alterações significativas. -
Considere executar operações
ANALYZEem 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 COLUMNSao executarANALYZE.
Configuração do cluster
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ó
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 na documentação do Amazon Redshift.
Tamanho do nó, número de nós e fatias
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 na documentação do Amazon Redshift.
Gerenciamento do workload
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 na documentação do Amazon Redshift.
Aceleração de consulta breve
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 na documentação do Amazon Redshift.
Consulta SQL
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
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 deste guia.
Compilação de código
O Amazon Redshift gera e compila o código para cada plano de execução de consulta. O código compilado é executado mais rápido porque ele remove a sobrecarga de usar um interpretador. Você geralmente tem alguns custos indiretos na primeira vez que o código é gerado e compilado. Como resultado, a performance de uma consulta na primeira vez que você a executa pode ser enganoso. Os custos indiretos podem ser particularmente evidentes quando você executa consultas únicas. Recomendamos executar a consulta uma segunda vez para determinar sua performance típica.
O Amazon Redshift usa um serviço de compilação sem servidor para escalar compilações de consulta além dos recursos de computação de um cluster do Amazon Redshift. Os segmentos de código compilados são armazenados em cache localmente no cluster e em um cache praticamente ilimitado. Esse cache persiste após a reinicialização do cluster. As invocações subsequentes da mesma consulta são mais rápidas porque podem pular a fase de compilação. O cache não é compatível entre as versões do Amazon Redshift, portanto, o código é recompilado quando as consultas são executadas após uma atualização de versão. Usando um serviço de compilação escalável, o Amazon Redshift consegue compilar código em paralelo para oferecer uma performance consistentemente rápida. A magnitude da aceleração do workload depende da complexidade e da simultaneidade das consultas.