Wie berechne ich die Amazon Redshift Spectrum-Abfragegebühren?
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:
- Öffne die Amazon Redshift-Konsole.
- Wähle Nutzungslimit konfigurieren.
- 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:
- Öffne die Amazon Redshift-Konsole.
- Wähle Nutzungslimit für die Gleichzeitigkeitsskalierung als Nutzungskontingent.
- 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
- Themen
- Analytics
- Tags
- Amazon Redshift
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 8 Monaten