Direkt zum Inhalt

Wie berechne ich die Amazon Redshift Spectrum-Abfragegebühren?

Lesedauer: 6 Minute
0

Ich möchte die Kosten berechnen und optimieren, wenn ich Amazon Redshift Spectrum zur Abfrage von Amazon Simple Storage Service (Amazon S3)-Daten verwende.

Kurzbeschreibung

Voraussetzungen:

  • Ein Amazon Redshift-Cluster und ein S3-Bucket, die sich in derselben AWS-Region befinden.
  • Ein SQL-Client, der mit dem Cluster verbunden ist, um SQL-Befehle auszuführen.

Dir wird die Anzahl der Byte in Rechnung gestellt, die Redshift Spectrum von Amazon S3 aus scannt. Je nach Region können zusätzliche Gebühren anfallen. Redshift Spectrum rundet Byte-Zahlen auf das nächste Megabyte auf, wobei mindestens 10 MB pro Abfrage erforderlich sind. Weitere Informationen findest du unter Amazon-Redshift-Preise.

Hinweis: Redshift Spectrum berechnet keine Gebühren für Datendefinitionssprach (Data Definition Language, DDL)-Anweisungen, ERSTELLEN, ALTER (ändern), und DROP TABLE (Tabelle ablegen), die Partitionen und fehlgeschlagene Abfragen verwalten. Deine Amazon Redshift Serverless-Rechenkapazitätsgebühren beinhalten alle externen Amazon S3-Datenabfragen.

Lösung

Verwende die Tabelle SVL_S3QUERY_SUMMARY, um die geschätzten Abfragekosten zu berechnen und eine Zusammenfassung aller S3-Abfragen zu erhalten, die du in Redshift Spectrum ausführst. Die Spalte s3_scanned_bytes gibt die Anzahl der Byte zurück, die Redshift Spectrum von S3 scannt und an die Redshift Spectrum-Schicht sendet.

Einsatzzweck

Führe die folgende Abfrage für SVL_S3QUERY_SUMMARY aus, um die Anzahl der Byte zu ermitteln, die Amazon S3 mit queryID überträgt:

SELECT s3_scanned_bytes
FROM SVL_S3QUERY_SUMMARY
WHERE query=queryID;

Hinweis: Ersetze queryID durch die ID deiner Abfrage.

Führe die folgende Abfrage aus, um die Summe aller von S3 gescannten Byte zu ermitteln:

SELECT sum(s3_scanned_bytes)
FROM SVL_S3QUERY_SUMMARY;

Du kannst auch die Summe der Byte für alle Redshift Spectrum-Abfragen ermitteln, die du in einem bestimmten Zeitintervall ausführst. Das folgende Beispiel zeigt, wie die Gesamtzahl der Byte aus Abfragen berechnet wird, mit deren Ausführung du am Vortag begonnen hast:

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

Wenn du die folgende Abfrage für einen S3-Bucket in der Region USA Ost (Nord-Virginia) ausführst, berechnet Redshift Spectrum die Gebühren pro Terabyte. Wenn die Summe für s3_scanned_bytes 621.900.000.000 Byte zurückgibt, wenn du SVL_S3QUERY_SUMMARY abfragst, dann hast du 0,565614755032584 Terabyte, wenn du von Byte in Terabyte umrechnest.

Beispielabfrage:

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

Im folgenden Beispiel beträgt deine Nutzung ungefähr 0,5657 Terabyte. Um die Nutzungskosten von Redshift Spectrum zu berechnen, multipliziere die Kosten pro Terabyte:

$5 * 0.5657= $2.83

Führe die folgende SQL-Abfrage aus, um die Nutzungsgebühren für Redshift Spectrum zu berechnen:

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;

Im vorherigen Beispiel werden die Gebühren in Redshift Spectrum anhand des S3-Buckets für Daten abgefragt, die die Abfrage vom Vortag gescannt hat.

Hinweis: Alle Abfragen, die bis zu 9,9 MB scannen, werden aufgerundet und mit 10 MB berechnet. Für fehlgeschlagene oder gestoppte Abfragen fallen keine Gebühren an.

Außerdem speichern Systemprotokolltabellen (STL) je nach Protokollnutzung und verfügbarem Speicherplatz nur 2–5 Tage des Protokollverlaufs. Um die übertragenen Byte aufzuzeichnen, empfiehlt es sich, die täglichen Abfragegebühren zu berechnen und die Daten in einer anderen Tabelle zu speichern.

Beispielabfrage:

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;

Hinweis: Du kannst die Abfrage TABELLE ERSTELLEN auch verwenden, um die Daten in einer anderen Tabelle zu berechnen und zu speichern. Wenn du keinen Zeitraum angeben möchtest, entferne current_date-1.

Berechne die Gesamtsumme der Daten, die eine Abfrage vom Vortag von S3 zu Redshift Spectrum scannt. Führe die folgende Abfrage aus, um die geschätzte Gesamtsumme der Gebühren zu berechnen:

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

Bewährte Methoden für Redshift Spectrum

Verwende die folgenden bewährten Methoden, um die Abfragegebühren zu reduzieren und die Leistung von Redshift Spectrum zu verbessern:

  • Verwende die Kostenkontrolle für Redshift Spectrum und die Features zur Gleichzeitigkeitsskalierung, um die Nutzung zu überwachen und zu kontrollieren.
  • Verwende Optimized Data Formats (Optimierte Datenformate), um die Leistung zu verbessern und die Kosten zu senken. Verwende spaltenförmige Datenformate wie PARQUET und ORC, um nur die Spalten auszuwählen, die du aus Amazon S3 scannen möchtest.
  • Wenn du selten auf die Daten zugreifst, lade die Daten in Amazon S3 und verwende Redshift Spectrum.
  • Wenn du mehrere Amazon Redshift-Cluster verwendest, um die Gleichzeitigkeit zu skalieren, beende die Cluster, sobald die Aufträge abgeschlossen sind.

Kostenkontrolle und Gleichzeitigkeitsskalierung für Redshift Spectrum

Wenn du das Feature zur Kostenkontrolle und Gleichzeitigkeitsskalierung für Redshift Spectrum verwendest, kannst du tägliche, wöchentliche und monatliche Nutzungskontingente erstellen. Wenn du die Nutzungskontingente erreichst, ergreift Amazon Redshift automatisch Maßnahmen.

Gehe wie folgt vor, um die Kostenkontrolle zu konfigurieren:

  1. Öffne die Amazon Redshift-Konsole.
  2. Wähle Nutzungslimit konfigurieren.
  3. Aktualisiere die folgenden Konfigurationseinstellungen:
    Zeitraum
    Nutzungslimit
    Aktion
    Hinweis: Die Einstellungen zu Aktion können dir bei der Verwaltung der Nutzungskontingente helfen.

Gehe wie folgt vor, um das Nutzungskontingent für die Gleichzeitigkeitsskalierung zu konfigurieren:

  1. Öffne die Amazon Redshift-Konsole.
  2. Wähle Nutzungslimit für die Gleichzeitigkeitsskalierung als Nutzungskontingent.
  3. Aktualisiere die folgenden Konfigurationseinstellungen:
    Zeitraum
    Nutzungslimit
    Aktion
    Hinweis: Der Zeitraum liegt in der UTC-Zeitzone. Für die Einstellung zu Aktion kannst du den Warn- und Deaktivierungs-Features auch ein Amazon Simple Notification Service (Amazon SNS)-Abonnement hinzufügen. Wenn du die Amazon Redshift-Konsole verwendest, um eine Warnung zu aktivieren, wird automatisch ein Amazon CloudWatch-Alarm für die Metriken erstellt.

Zusätzliche Anforderungen und Einschränkungen der Kostenkontrolle

Überprüfe die folgenden Anforderungen und Einschränkungen, um die Nutzung und Kosten von Redshift Spectrum zu verwalten:

  • Nutzungskontingente sind mit den unterstützten Versionen 1.0.14677 oder höher verfügbar.
  • Du kannst für jede Kategorie bis zu vier Kontingente und Aktionen mit einem Gesamtkontingent von acht hinzufügen.
  • Nur Regionen, in denen Redshift Spectrum und Gleichzeitigkeitsskalierung verfügbar sind, unterstützen Redshift Spectrum.
  • Nur ein Kontingent für jedes Feature kann das Feature „Deaktivieren“ verwenden.
  • Nutzungskontingente bleiben bestehen, bis du die Nutzungskontingentdefinition oder den Cluster löschst.
  • Wenn du ein Kontingent in der Mitte eines Zeitraums erstellst, wird das Kontingent von der Mitte bis zum Ende des Zeitraums gemessen.
  • Wenn du Protokolloptionen wählst, überprüfe die Details in den STL_USAGE_CONTROL-Protokollen.

Ähnliche Informationen

Festlegung von Nutzungslimits, einschließlich der Festlegung von RPU-Limits

SVL_QLOG

Referenz zu Systemtabellen und Ansichten

Bewährte Methoden für Amazon Redshift Spectrum

AWS OFFICIALAktualisiert vor 8 Monaten