Come posso calcolare i costi delle query di Amazon Redshift Spectrum?
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:
- Apri la console Amazon Redshift.
- Scegli Configura il limite di utilizzo.
- 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:
- Apri la console Amazon Redshift.
- Scegli Limite di utilizzo del dimensionamento simultaneo come quota di utilizzo.
- 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

Contenuto pertinente
- AWS UFFICIALEAggiornata 2 mesi fa
- AWS UFFICIALEAggiornata un mese fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata un anno fa