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á.
Redistribuição de dados EXPLAIN para os planos de consulta do Amazon Redshift
Durante as etapas de junção, uma fatia pode precisar trabalhar com dados não armazenados localmente, e a transmissão pela rede (movimentação de dados entre os nós de computação) é a operação de consulta mais cara.
A saída EXPLAIN para junções também especifica um método de como os dados serão movidos em torno de um cluster para facilitar a junção. Esta movimentação de dados pode ser uma transmissão ou uma redistribuição.
-
Em uma transmissão, os valores dos dados de um lado de uma junção são copiados de cada nó de computação para todos os outros nós de computação, de forma que todos os nós de computação tenham uma cópia completa dos dados.
-
Em uma redistribuição, os valores dos dados participantes são enviados de sua fatia atual para uma nova fatia (possivelmente em um nó diferente). Os dados são tipicamente redistribuídos para corresponder à chave de distribuição de outra tabela que participa da junção se aquela chave de distribuição for uma das colunas de junção. Se nenhuma das tabelas possui chaves de distribuição em uma das colunas de junção, ambas as tabelas são distribuídas ou a tabela interna é transmitida para cada nó.
A saída EXPLAIN também faz referência à tabelas internas e externas.
-
A verificação da tabela interna é realizada primeiro e aparece mais próxima da parte inferior do plano de consulta. A tabela interna é a tabela que é testada quanto às linhas correspondentes na tabela de compilação. Geralmente, uma tabela interna mantida na memória é a tabela de origem para o hashing e, se possível, é a menor das duas tabelas sendo juntadas.
-
A tabela externa é a fonte das linhas a serem comparadas com a tabela interna e, geralmente, é lida do disco. O otimizador de consulta escolhe a tabela interna e externa com base em estatísticas do banco de dados e do comando
ANALYZEexecutado mais recentemente. A ordem das tabelas na cláusulaFROMde uma consulta não determina qual tabela é interna e qual é externa.
Use the following attributes in query plans to identify how data is moved to facilitate a query:
-
DS_BCAST_INNER: indica que uma cópia de toda a tabela de junção interna está sendo transmitida para todos os nós de computação.
-
DS_DIST_ALL_NONE: nenhuma redistribuição é necessária, pois a tabela interna já foi distribuída para todos os nós usando
DISTSTYLE ALL. A tabela completa está localizada em todos os nós de computação. -
DS_DIST_NONE: nenhuma redistribuição é necessária, pois as fatias correspondentes são colocalizadas nos nós de computação. Esta é a opção mais eficiente porque não há transferência de rede.
-
DS_DIST_INNER: indica que a tabela de junção interna está redistribuída. Se a tabela interna for muito menor ou for atualizada com pouca frequência, considere alterá-la para
DISTSTYLE ALL. -
DS_DIST_OUTER: indica que a tabela de junção externa está redistribuída. Se a tabela externa for muito menor ou for atualizada com pouca frequência, considere alterá-la para
DISTSTYLE ALL. -
DS_DIST_ALL_INNER: indica que a tabela de junção interna está sendo enviada para um único nó porque a tabela de junção usa
DISTSTYLE ALL. Essa junção é executada em um único nó e é provável que seja lenta. -
DS_DIST_BOTH: indica que ambas as tabelas na junção estão sendo redistribuídas para todos os nós. Esta é a pior opção possível.