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 desempenho da consulta para o Amazon Redshift
Inúmeros fatores podem afetar a performance da consulta. Os seguintes aspectos de suas operações de dados, cluster e banco de dados desempenham um papel na rapidez com que suas consultas são processadas:
-
-
Chaves de classificação(Consultor do Amazon Redshift)
-
Compactação de dados(automatizado)
-
Distribuição de dados(automatizado)
-
Manutenção da mesa(automatizado)
-
-
-
Gerenciamento do workload(automatizado)
-
Aceleração de consulta breve(automatizado)
Propriedades da tabela
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 compressão e muitas outras. Compreender essas propriedades é crucial para otimizar o desempenho, a segurança e a economia das tabelas do Amazon Redshift.
Chaves de classificação
O Amazon Redshift armazena dados em disco em ordem classificada de acordo com as chaves de classificação de uma tabela. O otimizador de consultas e o processador de consultas usam as informações sobre onde os dados estão localizados em um nó de computação para reduzir o número de blocos que devem ser escaneados. Isso melhora significativamente a velocidade da consulta ao reduzir a quantidade de dados a serem processados. Recomendamos que você use chaves de classificação para facilitar os filtros na WHERE
cláusula. Para obter mais informações, consulte Como 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 reduz a E/S do disco e melhora o desempenho das consultas. Quando você executa uma consulta, os dados compactados são lidos na memória e depois descompactados quando a consulta é executada. Ao carregar menos dados na memória, o Amazon Redshift pode alocar mais memória para analisar os dados. Como o armazenamento colunar armazena dados semelhantes sequencialmente, o Amazon Redshift pode aplicar codificações de compactação adaptáveis especificamente vinculadas aos tipos de dados colunares. A melhor maneira de habilitar a compactação de dados nas colunas da tabela é usando a AUTO
opção 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 de uma 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 Como trabalhar com estilos de distribuição de dados na documentação do Amazon Redshift.
Manutenção da mesa
Embora o Amazon Redshift ofereça o melhor desempenho do setor pronto para uso imediato para a maioria das cargas de trabalho, 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 de acréscimo devem ser usadas se a ordem de acréscimo 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 o desempenho 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 e anteriores. UPDATE
DELETE
O Amazon Redshift pode classificar e executar automaticamente uma VACUUM DELETE
operação em 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 vacuums para reutilizar os dados (o que pode ser crucial para o desempenho). Para obter mais informações, consulte Limpeza de tabelas na documentação do Amazon Redshift.
Analisar
A ANALYZE
operação 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 no desempenho do sistema, a ANALYZE
operação é executada automaticamente durante os períodos em que as cargas de trabalho são leves. Se você optar por executar explicitamenteANALYZE
, faça o seguinte:
-
Execute o
ANALYZE
comando antes de executar as consultas. -
Execute o
ANALYZE
comando no banco de dados rotineiramente no final de cada ciclo regular de carregamento ou atualização. -
Execute o
ANALYZE
comando nas novas tabelas criadas por você e nas tabelas ou colunas existentes que sofram alterações significativas. -
Considere executar
ANALYZE
operações em horários diferentes para 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 de cluster, use a
PREDICATE COLUMNS
cláusula ao executar oANALYZE
comando.
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 você quiser alcançar o seguinte:
-
Alta escalabilidade e simultaneidade
-
Uso eficiente do Amazon Redshift
-
Melhor desempenho
-
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 custo e desempenho começa com a escolha do tipo e tamanho corretos do nó. Para obter mais informações sobre os tipos de nós, consulte Visão geral dos clusters do Amazon Redshift 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 significam mais processadores e fatias, o que permite que suas consultas sejam processadas mais rapidamente ao executar partes da consulta simultaneamente nas fatias. No entanto, mais nós também significam maiores despesas. Isso significa que você deve encontrar o equilíbrio entre custo e desempenho adequado ao seu sistema. Para obter mais informações sobre a arquitetura de cluster do Amazon Redshift, consulte Arquitetura do sistema de armazém de dados na documentação do Amazon Redshift.
Gerenciamento do workload
O gerenciamento de carga de trabalho do Amazon Redshift (WLM) permite que os usuários gerenciem de forma flexível as filas de carga de trabalho com prioridades para que consultas curtas e de execução rápida não fiquem presas em filas atrás de consultas de longa execução. O WLM automático usa algoritmos de aprendizado de máquina (ML) para criar perfis de consultas e colocá-las na fila apropriada com os recursos apropriados, enquanto gerencia a simultaneidade de consultas e a alocação de memória. Para obter mais informações sobre o WLM, consulte Implementação do gerenciamento de carga de trabalho na documentação do Amazon Redshift.
Aceleração de consulta breve
A aceleração de consultas curtas (SQA) prioriza consultas de curta duração em vez de consultas de longa duração. O 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 longas. O SQA apenas prioriza consultas que são de execução curta e estão em uma fila definida pelo usuário. Se você usa o SQA, as consultas de curta duração começam a ser executadas mais rapidamente e você pode ver os resultados mais cedo. Se você habilitar o SQA, poderá reduzir ou eliminar as filas do WLM dedicadas a consultas de curta duração. Além disso, consultas de longa duração 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. Se você usar menor simultaneidade, a taxa de transferência de consultas aumentará e o desempenho geral do sistema será aprimorado para a maioria das cargas de trabalho. Para obter mais informações sobre SQA, consulte Como trabalhar com aceleração de consulta curta 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 de 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 da consulta
A forma como sua consulta é escrita afeta muito seu desempenho. Recomendamos que você escreva consultas para processar e retornar o mínimo de dados necessário para atender às suas necessidades. Para obter mais informações sobre como estruturar suas consultas, consulte a seção Melhores práticas para criar consultas do Amazon Redshift deste guia.
Compilação de código
O Amazon Redshift gera e compila 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. Geralmente, você tem algum custo indireto 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. O custo indireto pode ser especialmente perceptível quando você executa consultas pontuais. Recomendamos que você execute a consulta uma segunda vez para determinar seu desempenho típico.
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 executadas mais rapidamente 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.