Plano de consulta no Amazon Redshift - AWS Orientação prescritiva

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

Plano de consulta no Amazon Redshift

Um plano de consulta é uma lista de instruções que o mecanismo de execução deve seguir para executar uma consulta nos dados. Você pode criar um plano de consulta executando o comando EXPLAIN seguido pelo texto real da consulta, conforme mostra o exemplo de consulta a seguir:

EXPLAIN select s.s_name, sum(li.l_quantity) as quantity from tpch.lineitem li join tpch.orders o on o.o_orderkey = li.l_orderkey and o.o_orderdate > '1992-05-01' join tpch.supplier s on s.s_suppkey = li.l_suppkey group by s.s_name order by quantity desc limit 10;

Se você executar o comando EXPLAIN para o exemplo de consulta acima, obterá a seguinte saída:

XN Limit (cost=1004400430902.15..1004400430902.17 rows=10 width=39) -> XN Merge (cost=1004400430902.15..1004400430926.97 rows=9928 width=39) Merge Key: sum(li.l_quantity) -> XN Network (cost=1004400430902.15..1004400430926.97 rows=9928 width=39) Send to leader -> XN Sort (cost=1004400430902.15..1004400430926.97 rows=9928 width=39) Sort Key: sum(li.l_quantity) -> XN HashAggregate (cost=4400430218.24..4400430243.06 rows=9928 width=39) -> XN Hash Join DS_BCAST_INNER (cost=21489.58..4400401726.35 rows=5698378 width=39) Hash Cond: ("outer".l_suppkey = "inner".s_suppkey) -> XN Hash Join DS_DIST_NONE (cost=21364.58..273387.85 rows=5698378 width=14) Hash Cond: ("outer".l_orderkey = "inner".o_orderkey) -> XN Seq Scan on lineitem li (cost=0.00..60012.15 rows=6001215 width=22) -> XN Hash (cost=17803.81..17803.81 rows=1424306 width=8) -> XN Seq Scan on orders o (cost=0.00..17803.81 rows=1424306 width=8) Filter: (o_orderdate > '1992-05-01'::date) -> XN Hash (cost=100.00..100.00 rows=10000 width=33) -> XN Seq Scan on supplier s (cost=0.00..100.00 rows=10000 width=33)
nota

O plano de consulta de exemplo é uma visualização simplificada e de alto nível da execução da consulta. Ele não ilustra os detalhes do processamento paralelo da consulta. Para obter informações detalhadas, execute a consulta e use as visualizações SVL_QUERY_SUMMARY ou SVL_QUERY_REPORT pata obter informações do resumo da consulta.

Editor de Consultas V2 do Amazon Redshift

Você também pode visualizar os planos de consulta no Amazon Redshift usando a opção Explain no editor de consultas v2. Para obter instruções, consulte Como trabalhar com o editor de consultas v2 na documentação do Amazon Redshift.

O plano de consulta gerado pelo editor de consultas v2 inclui as seguintes informações:

  • Quais operações o mecanismo de execução realiza, lendo os resultados de baixo para cima.

  • Que tipo de etapa cada operação executa.

  • Quais tabelas e colunas são usadas em cada operação.

  • Quantos dados são processados em cada operação, em termos de número de linhas e largura de dados em bytes.

  • O custo relativo da operação (Custo é uma medida que compara os tempos relativos de execução das etapas dentro de um plano. Ele não fornece informações precisas sobre os tempos reais de execução ou o consumo de memória, nem fornece uma comparação significativa entre os planos de execução. No entanto, o custo fornece uma indicação de quais operações em uma consulta estão consumindo mais recursos.)

Planos EXPLAIN

Você pode usar a tabela do sistema STL_EXPLAIN para exibir o plano EXPLAIN de uma consulta que foi enviada para execução. No geral, o uso do STL_EXPLAIN pode ajudar a melhorar oa performance, a eficiência e a economia de suas consultas do Amazon Redshift.

Os benefícios de usar o STL_EXPLAIN são:

  • Otimização de performance: o STL_EXPLAIN pode ajudar a identificar áreas de uma consulta que podem ser otimizadas para melhorar a performance.

  • Planejamento de consultas: o STL_EXPLAIN pode fornecer informações sobre como o Amazon Redshift está executando a consulta e pode ajudar a identificar possíveis gargalos na consulta.

  • Depuração: o STL_EXPLAIN pode ajudar a diagnosticar problemas com uma consulta mostrando as etapas que o Amazon Redshift executa para realizar essa consulta.

  • Compreender o comportamento do Amazon Redshift: o STL_EXPLAIN pode fornecer insights sobre como o Amazon Redshift processa consultas. Isso pode ajudar a melhorar sua compreensão do comportamento do Amazon Redshift.

  • Otimização de custos: o STL_EXPLAIN pode fornecer informações sobre o custo estimado de uma consulta. Isso pode ajudar a identificar áreas em que é possível otimizar custos.

A consulta a seguir é um exemplo que retorna os nós do plano para uma determinada consulta:

select nodeid as id, plannode, info from stl_explain where query=1042904 order by nodeid;

A consulta anterior retorna a saída a seguir.

Saída de uma consulta que retorna os nós do plano de consulta.

O plano EXPLAIN retorna métricas úteis para cada operação, incluindo métricas sobre custo, linhas e largura. Por exemplo, a linha 7 da consulta anterior retorna o seguinte:

-> XN Hash Join DS_DIST_NONE (cost=21364.58..273387.85 rows=5698378 width=14)

Custo

O custo é um valor relativo que é útil para comparar operações em um plano. O custo consiste em dois valores decimais separados por dois pontos. Neste exemplo, o custo é igual a 21364.58..273387.85. Considere o seguinte:

  • O primeiro valor (neste caso, 21364.58) fornece o custo relativo de retornar a primeira linha para essa operação.

  • O segundo valor (neste caso, 273387.85) fornece o custo relativo de concluir a operação. 

Os custos no plano de consulta são cumulativos e somam das linhas inferiores para as superiores. No exemplo de saída acima, a linha 7 inclui o custo das outras operações nas linhas abaixo de si mesma (ou seja, linhas de 8 a 12 e posteriores).

Linhas

Linhas é o número previsto de linhas a retornar. Neste exemplo, a previsão de retorno da verificação é de 5.698.378 linhas. A estimativa de linhas baseia-se nas estatísticas disponíveis geradas pelo comando ANALYZE. Se ANALYZE não tiver sido executado recentemente, a estimativa será menos confiável.

Largura

Largura é a largura estimada da linha média, em bytes. Neste exemplo, a previsão de largura da linha média é de 14 bytes.