Como faço para calcular as cobranças de consultas do Amazon Redshift Spectrum?

7 minuto de leitura
0

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:

  1. Abra o console do Amazon Redshift.
  2. Escolha Configurar limite de uso.
  3. 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:

  1. Abra o console do Amazon Redshift.
  2. Escolha limite de uso da escalabilidade de simultaneidade como sua cota de uso.
  3. 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

SVL_QLOG

Referência de tabelas e visualizações do sistema

Melhores práticas para o Amazon Redshift Spectrum

AWS OFICIAL
AWS OFICIALAtualizada há um mês