Fatores que afetam a performance da consulta
Inúmeros fatores podem afetar a performance da consulta. Os seguintes aspectos de seus dados, cluster operações de banco de dados têm um papel na velocidade do processamento de suas consultas.
-
Número de nós, processadores ou fatias – Um nó de computação é dividido em fatias. Mais nós significam mais processadores e mais fatias, o que permite que suas consultas sejam processadas mais rápido executando partes da consulta simultaneamente entre as fatias. No entanto, mais nós também significam mais despesas, portanto você precisa encontrar o equilíbrio entre custo e a performance mais apropriada para seu sistema. Para obter mais informações sobre a arquitetura de cluster do Amazon Redshift, consulte Arquitetura de sistema do data warehouse.
-
Tipos de nó: um cluster do Amazon Redshift pode usar um dos vários tipos de nó. 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. Para obter mais informações sobre tipos de nós, consulte “Clusters do Amazon Redshift” no Guia de gerenciamento de clusters do Amazon Redshift.
-
Distribuição de dados – O Amazon Redshift armazena dados da tabela 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. Para ter mais informações, consulte Distribuição de dados para otimização de consultas.
-
Ordem de classificação de dados – O Amazon Redshift armazena dados da tabela no disco em ordem classificada de acordo com as chaves de classificação de uma tabela. O otimizador de consulta e o processador de consulta usam as informações sobre onde os dados estão localizados para reduzir o número de blocos que precisam ser varridos e, portanto, melhoram a velocidade da consulta. Para ter mais informações, consulte Chaves de classificação.
-
Tamanho do conjunto de dados – Um volume maior de dados no cluster pode diminuir a performance da consulta para consultas, porque mais linhas precisam ser verificadas e redistribuídas. Você pode atenuar este efeito com a limpeza e arquivamento regulares dos dados e ao usar um predicado para restringir o conjunto de dados da consulta.
-
Operações simultâneas – A execução de várias operações ao mesmo tempo pode afetar a performance da consulta. Cada operação ocupa uma ou mais vagas em uma fila de consulta disponível e usa a memória associada a estas vagas. Se outras operações estiverem em execução, pode não haver vagas disponíveis suficientes na fila de consulta. Nesse caso, a consulta terá que esperar a abertura de vagas para poder iniciar o processamento. Para obter mais informações sobre a criação e configuração de filas de consulta, consulte Gerenciamento do workload.
-
Estrutura da consulta – Como sua consulta é escrita afeta sua performance. Sempre que possível, grave consultas para processar e retornar a menor quantidade de dados de acordo com suas necessidades. Para ter mais informações, consulte Práticas recomendadas do Amazon Redshift para criar consultas.
-
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ê sempre tem alguns custos gerais 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 gerais podem ser especialmente visíveis quando você executa consultas únicas. Execute 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 execuçõ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 cache de compilação é liberado e o código é recompilado quando as consultas são executadas após uma atualização de versão. Se as consultas tiverem SLAs rigorosos, recomendamos que você execute previamente segmentos de consulta que examinam dados de tabelas de cluster. Isso permite que o Amazon Redshift armazene em cache os dados da tabela de base, reduzindo o tempo de planejamento das consultas após a atualização da 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.