Come posso calcolare i costi delle query di Amazon Redshift Spectrum?

6 minuti di lettura
0

Desidero calcolare e ottimizzare i costi quando utilizzo Amazon Redshift Spectrum per eseguire query sui dati di Amazon Simple Storage Service (Amazon S3).

Breve descrizione

Prerequisiti:

  • Un cluster Amazon Redshift e un bucket S3 che si trovano nella stessa Regione AWS.
  • Un client SQL connesso al cluster per eseguire comandi SQL.

Ti viene addebitato il numero di byte che Redshift Spectrum scansiona da Amazon S3. Potresti incorrere in costi aggiuntivi a seconda della Regione. Redshift Spectrum arrotonda i numeri di byte al megabyte successivo, con un minimo di 10 MB per query. Per ulteriori informazioni, consulta Prezzi di Amazon Redshift.

Nota: Redshift Spectrum non addebita alcun costo per le istruzioni Data Definition Language (DDL), CREATE, **ALTER ** e DROP TABLE, che gestiscono partizioni e query non riuscite. I costi della capacità di elaborazione di Amazon Redshift serverless includono tutte le query su dati esterni di Amazon S3.

Risoluzione

Per calcolare il costo stimato delle query e ottenere un riepilogo di tutte le query S3 eseguite in Redshift Spectrum, utilizza la tabella SVL_S3QUERY_SUMMARY. La colonna s3_scanned_bytes restituisce il numero di byte che Redshift Spectrum scansiona da S3 e invia al livello Redshift Spectrum.

Utilizzo

Esegui la seguente query su SVL_S3QUERY_SUMMARY per determinare il numero di byte che Amazon S3 trasferisce tramite queryID:

SELECT s3_scanned_bytes
FROM SVL_S3QUERY_SUMMARY
WHERE query=queryID;

Nota: sostituisci queryID con l'ID della tua query.

Per determinare la somma di tutti i byte scansionati da S3, esegui questa query:

SELECT sum(s3_scanned_bytes)
FROM SVL_S3QUERY_SUMMARY;

Puoi anche determinare la somma dei byte per tutte le query Redshift Spectrum eseguite in un intervallo di tempo specifico. L'esempio seguente mostra come calcolare i byte totali dalle query iniziate a eseguire dal giorno precedente:

SELECT sum(s3_scanned_bytes)
FROM SVL_S3QUERY_SUMMARY
WHERE starttime >= current_date-1;

Se esegui questa query su un bucket S3 nella Regione Stati Uniti orientali (Virginia settentrionale), Redshift Spectrum addebita un costo per terabyte. Se la somma per s3_scanned_bytes restituisce 621.900.000.000 di byte quando esegui una query su SVL_S3QUERY_SUMMARY, convertendo da byte a terabyte ottieni 0,565614755032584 terabyte.

Esempio di query:

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

Nel seguente esempio, l'utilizzo è di circa 0,5657 terabyte. Per calcolare il costo di utilizzo di Redshift Spectrum, moltiplica il costo per terabyte:

$5 * 0.5657= $2.83

Esegui questa query SQL per calcolare i costi di utilizzo di 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;

L'esempio precedente esegue una query sugli addebiti in Redshift Spectrum per il bucket S3 derivanti dai dati scansionati dalla query il giorno precedente.

Nota: tutte le query che scansionano fino a 9,9 MB vengono arrotondate per eccesso e addebitate come se fossero pari a 10 MB. Non sono previsti addebiti per query non riuscite o interrotte.

Inoltre, le tabelle di log di sistema (STL) conservano solo 2-5 giorni di cronologia dei log a seconda dell'utilizzo del log e dello spazio disponibile su disco. Per monitorare i byte trasferiti, è consigliabile calcolare i costi giornalieri delle query e archiviare i dati in un'altra tabella.

Esempio di query:

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;

Nota: è inoltre possibile utilizzare la query CREATE TABLE per calcolare e archiviare i dati in un'altra tabella. Se non desideri specificare un periodo di tempo, rimuovi\ current_date-1.

Calcola la somma totale dei dati scansionati da una query da S3 a Redshift Spectrum il giorno prima. Per calcolare la stima totale degli addebiti, esegui questa query:

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

Best practice di Redshift Spectrum

Per ridurre i costi delle query e migliorare le prestazioni di Redshift Spectrum, utilizza le seguenti best practice:

  • Utilizza i controlli dei costi per Redshift Spectrum e le funzionalità di dimensionamento della simultaneità per monitorare e controllare l'utilizzo.
  • Utilizza formati di dati ottimizzati per migliorare le prestazioni e ridurre i costi. Utilizza formati di dati a colonne come PARQUET e ORC per selezionare solo le colonne che desideri scansionare da Amazon S3.
  • Se accedi raramente ai dati, carica i dati in Amazon S3 e utilizza Redshift Spectrum.
  • Quando utilizzi più cluster Amazon Redshift per scalare la simultaneità, interrompi i cluster non appena i processi sono completi.

Controllo dei costi e dimensionamento della simultaneità per Redshift Spectrum

Se utilizzi il controllo dei costi e la funzionalità di dimensionamento della simultaneità per Redshift Spectrum, puoi creare quote di utilizzo giornaliere, settimanali e mensili. Quando raggiungi le quote di utilizzo, Amazon Redshift interviene automaticamente.

Per configurare il controllo dei costi, completa i passaggi seguenti:

  1. Apri la console Amazon Redshift.
  2. Scegli Configura il limite di utilizzo.
  3. Aggiorna le seguenti impostazioni di configurazione:
    Periodo di tempo
    Limite di utilizzo
    Operazione
    Nota: le impostazioni Operazione possono aiutarti a gestire le quote di utilizzo.

Per configurare la quota di utilizzo del dimensionamento della simultaneità, completa i seguenti passaggi:

  1. Apri la console Amazon Redshift.
  2. Scegli Limite di utilizzo del dimensionamento simultaneo come quota di utilizzo.
  3. Aggiorna le seguenti impostazioni di configurazione:
    Periodo di tempo
    Limite di utilizzo
    Operazione
    Nota: Periodo di tempo è nel fuso orario UTC. Per l'impostazione Operazione, puoi anche collegare alle funzionalità Avviso e Disabilita un abbonamento Amazon Simple Notification Service (Amazon SNS). Se utilizzi la console Amazon Redshift per attivare un avviso, viene creato automaticamente un allarme Amazon CloudWatch per le metriche.

Limitazioni e requisiti aggiuntivi per il controllo dei costi

Per gestire l'utilizzo e i costi di Redshift Spectrum, consulta i seguenti requisiti e limitazioni:

  • Le quote di utilizzo sono disponibili con le versioni supportate 1.0.14677 o successive.
  • Puoi aggiungere fino a quattro quote e operazioni per ogni categoria con una quota totale di otto.
  • Solo le Regioni in cui sono disponibili Redshift Spectrum e il dimensionamento della simultaneità supportano Redshift Spectrum.
  • Solo una quota per ogni funzionalità può utilizzare la funzione Disabilita.
  • Le quote di utilizzo rimangono invariate finché non elimini la definizione della quota di utilizzo o il cluster.
  • Se crei una quota a metà di un periodo, la quota viene misurata dal punto centrale alla fine del periodo.
  • Se scegli le opzioni di log, rivedi i dettagli nei log STL_USAGE_CONTROL.

Informazioni correlate

Impostazione dei limiti di utilizzo, inclusa l'impostazione dei limiti RPU

SVL_QLOG

Riferimento di tabelle e viste di sistema

Best practice per Amazon Redshift Spectrum

AWS UFFICIALE
AWS UFFICIALEAggiornata un mese fa