Como faço para calcular as cobranças de consultas do Amazon Redshift Spectrum?
Quero calcular e otimizar os custos ao usar o Amazon Redshift Spectrum para consultar dados do Amazon Simple Storage Service (Amazon S3).
Breve descrição
Pré-requisitos:
- Um cluster do Amazon Redshift e um bucket do S3 que estão na mesma região da AWS.
- Um cliente SQL conectado ao seu cluster para executar comandos SQL.
Você é cobrado pelo número de bytes que o Redshift Spectrum verifica a partir do Amazon S3. Podem ser cobradas taxas adicionais dependendo da região. O Redshift Spectrum arredonda os números de bytes para o próximo megabyte, com um mínimo de 10 MB por consulta. Para mais informações, consulte Métricas do Amazon Redshift.
Observação: o Redshift Spectrum não cobra pelas instruções DDL (Data Definition Language), CREATE, ALTER e DROP TABLE, que gerenciam partições e consultas com falha. Suas cobranças de capacidade computacional sem servidor do Amazon Redshift incluem todas as consultas de dados externas do Amazon S3.
Resolução
Para calcular o custo estimado da consulta e obter um resumo de todas as consultas do S3 que você executa no Redshift Spectrum, use a tabela SVL_S3QUERY_SUMMARY. A coluna s3_scanned_bytes retorna o número de bytes que o Redshift Spectrum escaneia do S3 e envia para a camada do Redshift Spectrum.
Uso
Execute a seguinte consulta em SVL_S3QUERY_SUMMARY para determinar o número de bytes que o Amazon S3 transfere por queryID:
SELECT s3_scanned_bytes FROM SVL_S3QUERY_SUMMARY WHERE query=queryID;
Observação: substitua query_id pelo ID da sua consulta.
Para determinar a soma de todos os bytes escaneados do S3, execute a seguinte consulta:
SELECT sum(s3_scanned_bytes) FROM SVL_S3QUERY_SUMMARY;
Também é possível determinar a soma de bytes para todas as consultas do Redshift Spectrum executadas em um intervalo de tempo específico. O exemplo a seguir mostra como calcular o total de bytes das consultas que você começou a executar no dia anterior:
SELECT sum(s3_scanned_bytes) FROM SVL_S3QUERY_SUMMARY WHERE starttime >= current_date-1;
Se você executar a consulta a seguir em um bucket do S3 na região Leste dos EUA (Norte da Virgínia), o Redshift Spectrum cobrará por terabyte. Se a soma de s3_scanned_bytes retornar 621.900.000.000 bytes ao consultar SVL_S3QUERY_SUMMARY, você terá 0,565614755032584 terabytes ao converter bytes em terabytes.
Consulta de exemplo:
621900000000 bytes = 621900000000/1024 = 607324218.75 kilobytes 607324218.75 kilobytes = 607324218.75/1024 = 593090.057373046875 megabytes 593090.057373046875 megabytes = 593090.057373046875 /1024 = 579.189509153366089 gigabytes 579.189509153366089 gigabytes = 579.189509153366089/1024 = 0.565614755032584 terabytes
No exemplo a seguir, seu uso é de aproximadamente 0,5657 terabytes. Para calcular o custo de uso do Redshift Spectrum, multiplique o custo por terabyte:
$5 * 0.5657= $2.83
Execute a seguinte consulta SQL para calcular as cobranças de uso do Redshift Spectrum:
SELECT round(1.0*sum(s3_scanned_bytes/1024/1024/1024/1024),4) s3_scanned_tb, round(1.0*5*sum(s3_scanned_bytes/1024/1024/1024/1024),2) cost_in_usd FROM SVL_S3QUERY_SUMMARY;
O exemplo anterior consulta as cobranças no Redshift Spectrum em seu bucket do S3 para dados que a consulta verificou no dia anterior.
Observação: todas as consultas que digitalizam até 9,9 MB são arredondadas e cobradas por 10 MB. Não há cobranças por consultas com falha ou interrompidas.
Além disso, as tabelas de log do sistema (STL) mantêm apenas 2 a 5 dias de histórico de log, dependendo do uso do log e do espaço disponível em disco. Para manter um registro dos bytes transferidos, é uma prática recomendada calcular as cobranças diárias da consulta e armazenar os dados em outra tabela.
Consulta de exemplo:
CREATE VIEW spectrum_cost AS SELECT starttime::date as date, xid, query, trim(usename) as user, CASE WHEN s3_scanned_bytes < 10000000 then 10 ELSE s3_scanned_bytes/1024/1024 end as scanned_mb, round(CASE WHEN s3_scanned_bytes < 10000000 then 10*(5.0/1024/1024) ELSE (s3_scanned_bytes/1024/1024)*(5.0/1024/1024) end,5) as cost_$ FROM svl_s3query_summary s LEFT JOIN pg_user u ON userid=u.usesysid JOIN (select xid as x_xid,max(aborted) as x_aborted from svl_qlog group by xid) q ON s.xid=q.x_xid WHERE userid>1 AND x_aborted=0 AND s.starttime >= current_date-1;
Observação: também é possível usar a consulta CREATE TABLE para calcular e armazenar os dados em outra tabela. Se você não quiser especificar um período de tempo, remova current_date-1.
Calcule a soma total dos dados que uma consulta verifica do S3 para o Redshift Spectrum no dia anterior. Para calcular a estimativa total das cobranças, execute a seguinte consulta:
SELECT current_date-1 as query_since, SUM(scanned_mb) as total_scanned_mb, SUM(cost_$) as total_cost_$ FROM spectrum_cost; Result: query_since | total_scanned_mb | total_cost_$ --------------+------------------+--------------- 2020-05-15 | 5029 | 0.02515
Melhores práticas do Redshift Spectrum
Para reduzir as cobranças de consultas e melhorar o desempenho do Redshift Spectrum, use as seguintes práticas recomendadas:
- Use controles de custo para o Redshift Spectrum e recursos de escalabilidade simultânea para monitorar e controlar seu uso.
- Use formatos de dados otimizados para melhorar o desempenho e reduzir os custos. Use formatos de dados colunares, como PARQUET e ORC, para selecionar somente as colunas que você deseja digitalizar do Amazon S3.
- Se você acessa os dados com pouca frequência, carregue os dados no Amazon S3 e use o Redshift Spectrum.
- Ao usar vários clusters do Amazon Redshift para escalar a simultaneidade, interrompa os clusters assim que os trabalhos forem concluídos.
Controles de custos e escalabilidade de simultaneidade para o Redshift Spectrum
Se você usar os controles de custo e o atributo de escalabilidade simultânea do Redshift Spectrum, poderá criar cotas de uso diárias, semanais e mensais. Quando você atinge as cotas de uso, o Amazon Redshift age automaticamente.
Para configurar o controle de custos, conclua as seguintes etapas:
- Abra o console do Amazon Redshift.
- Escolha Configurar limite de uso.
- Atualize as seguintes configurações:
Período de tempo
Limite de uso
Ação
Observação: As configurações de ação podem ajudar você a gerenciar suas cotas de uso.
Para configurar a cota de uso da escalabilidade de simultaneidade, conclua as seguintes etapas:
- Abra o console do Amazon Redshift.
- Escolha limite de uso da escalabilidade de simultaneidade como sua cota de uso.
- Atualize as seguintes configurações:
Período de tempo
Limite de uso
Ação
Observação: O período de tempo está no fuso horário UTC. Para a configuração de Ação, também é possível anexar uma assinatura do Amazon Simple Notification Service (Amazon SNS) aos recursos de alerta e desativação. Se você usar o console do Amazon Redshift para ativar um alerta, um alarme do Amazon CloudWatch será criado automaticamente para as métricas.
Requisitos e limitações adicionais de controle de custos
Para gerenciar o uso e o custo do Redshift Spectrum, analise os seguintes requisitos e limitações:
- As cotas de uso estão disponíveis nas versões suportadas 1.0.14677 ou posteriores.
- É possível adicionar até quatro cotas e ações para cada categoria com uma cota total de oito.
- Somente regiões em que o Redshift Spectrum e a escalabilidade simultânea estão disponíveis oferecem suporte ao Redshift Spectrum.
- Somente uma cota para cada atributo pode usar o atributo Desativar.
- As cotas de uso persistem até que você exclua a definição da cota de uso ou o cluster.
- Se você criar uma cota no meio de um período, a cota será medida do ponto médio até o final do período.
- Se você escolher as opções de registro, revise os detalhes nos logs STL_USAGE_CONTROL.
Informações relacionadas
Definir limites de uso, incluindo definir limites de RPU

Conteúdo relevante
- feita há 18 diaslg...
- feita há 4 meseslg...
- feita há 6 diaslg...
- feita há um mêslg...
- AWS OFICIALAtualizada há um mês
- AWS OFICIALAtualizada há 2 meses
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos