

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Performance de consulta do Amazon Redshift Spectrum
<a name="c-spectrum-external-performance"></a>

Este tópico descreve como melhorar a performance de consulta do Redshift Spectrum.

Verifique o plano da consulta para saber quais etapas foram enviadas para a camada do Amazon Redshift Spectrum. 

As etapas a seguir são relacionadas com a consulta do Redshift Spectrum:
+ S3 Seq Scan 
+ S3 HashAggregate 
+ S3 Query Scan
+ Seq Scan PartitionInfo
+ Partition Loop 

O exemplo a seguir mostra o plano de uma consulta que une uma tabela externa a uma tabela local. Observe as etapas S3 Seq Scan e S3 HashAggregate que foram executadas com os dados do Amazon S3.

```
explain
select top 10 spectrum.sales.eventid, sum(spectrum.sales.pricepaid) 
from spectrum.sales, event
where spectrum.sales.eventid = event.eventid
and spectrum.sales.pricepaid > 30
group by spectrum.sales.eventid
order by 2 desc;
```

```
QUERY PLAN                                                                                                                                                                                
-----------------------------------------------------------------------------
XN Limit  (cost=1001055770628.63..1001055770628.65 rows=10 width=31)                                                                                                                      
  ->  XN Merge  (cost=1001055770628.63..1001055770629.13 rows=200 width=31)                                                                                                               
        Merge Key: sum(sales.derived_col2)                                                                                                                                                
        ->  XN Network  (cost=1001055770628.63..1001055770629.13 rows=200 width=31)                                                                                                       
              Send to leader                                                                                                                                                              
              ->  XN Sort  (cost=1001055770628.63..1001055770629.13 rows=200 width=31)                                                                                                    
                    Sort Key: sum(sales.derived_col2)                                                                                                                                     
                    ->  XN HashAggregate  (cost=1055770620.49..1055770620.99 rows=200 width=31)                                                                                           
                          ->  XN Hash Join DS_BCAST_INNER  (cost=3119.97..1055769620.49 rows=200000 width=31)                                                                             
                                Hash Cond: ("outer".derived_col1 = "inner".eventid)                                                                                                       
                                ->  XN S3 Query Scan sales  (cost=3010.00..5010.50 rows=200000 width=31)                                                                                  
                                      ->  S3 HashAggregate  (cost=3010.00..3010.50 rows=200000 width=16)                                                                                  
                                            ->  S3 Seq Scan spectrum.sales location:"s3://redshift-downloads/tickit/spectrum/sales" format:TEXT  (cost=0.00..2150.00 rows=172000 width=16)
                                                  Filter: (pricepaid > 30.00)                                                                                                             
                                ->  XN Hash  (cost=87.98..87.98 rows=8798 width=4)                                                                                                        
                                      ->  XN Seq Scan on event  (cost=0.00..87.98 rows=8798 width=4)
```

Observe os seguintes elementos no plano da consulta:
+ O nó `S3 Seq Scan` mostra que o filtro `pricepaid > 30.00` foi processado na camada do Redshift Spectrum.

  Um nó de filtro sob o nó `XN S3 Query Scan` indica um processamento de predicado no Amazon Redshift, além dos dados obtidos da camada do Redshift Spectrum.
+ O nó `S3 HashAggregate` indica uma agregação na camada do Redshift Spectrum para a cláusula de 'group by' (`group by spectrum.sales.eventid`).

As recomendações a seguir representam maneiras de melhorar a performance do Redshift Spectrum:
+ Use arquivos de dados formatados pelo Apache Parquet. O Parquet armazena dados em um formato colunar, de maneira que o Redshift Spectrum pode eliminar colunas desnecessárias da varredura. Quando os dados estão em formato de arquivo de texto, o Redshift Spectrum precisa fazer a varredura do arquivo inteiro.
+ Use vários arquivos para otimizar o processamento paralelo. Mantenha os tamanhos de seus arquivos maiores que 64 MB. Evite a distorção do tamanho dos dados mantendo os arquivos com aproximadamente o mesmo tamanho. Para ter informações sobre os arquivos e recomendações de configuração do Apache Parquet, consulte [File Format: Configurations](https://parquet.apache.org/docs/file-format/configurations/) na *documentação do Apache Parquet*.
+ Use o menor número possível de colunas nas consultas.
+ Coloque as tabelas de fatos grandes no Amazon S3 e mantenha as tabelas menores utilizadas com maior frequência no banco de dados local do Amazon Redshift.
+ Atualize as estatísticas das tabelas externas configurando o parâmetro numRows de TABLE PROPERTIES. Use [CREATE EXTERNAL TABLE](r_CREATE_EXTERNAL_TABLE.md) ou [ALTER TABLE](r_ALTER_TABLE.md) para definir o parâmetro TABLE PROPERTIES numRows para refletir o número de linhas na tabela. O Amazon Redshift não analisa as tabelas externas para gerar as estatísticas das tabelas que o otimizador de consultas utiliza para gerar um plano de consulta. Se as estatísticas da tabela não estiverem configuradas para uma tabela externa, o Amazon Redshift gerará um plano de execução de consulta. O Amazon Redshift gera esse plano baseado em uma suposição de que as tabelas externas são as maiores e as tabelas locais são as menores.
+ O planejador de consultas do Amazon Redshift envia predicados e agregações para a camada de consulta do Redshift Spectrum sempre que possível. Quando grandes quantidades de dados são retornadas do Amazon S3, o processamento é limitado pelos recursos do seu cluster. O Redshift Spectrum é automaticamente dimensionado para processar grandes solicitações. Assim, a performance geral é aprimorado sempre que você pode enviar processamento para a camada do Redshift Spectrum. 
+ Ao escrever suas consultas, considere o uso de filtros e agregações que sejam elegíveis para o processamento na camada do Redshift Spectrum.

  Os exemplos a seguir mostram algumas operações que podem ser enviadas para a camada do Redshift Spectrum:
  + Cláusulas GROUP BY
  + Condições de comparação e de correspondência de padrões, tais como LIKE.
  + Funções agregadas, tais como COUNT, SUM, AVG, MIN e MAX.
  + Funções de string.

  As operações que não podem ser enviadas para a camada do Redshift Spectrum incluem DISTINCT e ORDER BY.
+ Use partições para limitar os dados para a varredura. Divida seus dados em partições com base nos predicados de consulta mais comuns e, em seguida, elimine as partições filtrando pelas colunas de partição. Para obter mais informações, consulte [Dividir as tabelas externas do Redshift Spectrum](c-spectrum-external-tables.md#c-spectrum-external-tables-partitioning).

  Consulte a [SVL\_S3PARTITION](r_SVL_S3PARTITION.md) para visualizar as partições totais e as partições qualificadas.
+  Use o gerador de estatísticas do AWS Glue para calcular estatísticas no nível da coluna para tabelas do AWS Glue Data Catalog. Depois que o AWS Glue gera estatísticas para tabelas no catálogo de dados, o Amazon Redshift Spectrum usa automaticamente essas estatísticas para otimizar o plano de consulta. Para obter mais informações sobre como computar estatísticas no nível da coluna usando AWS Glue, consulte [Working with column statistics](https://docs.aws.amazon.com/glue/latest/dg/column-statistics.html) no *Guia do desenvolvedor do AWS Glue*. 