Warum dauert die Ausführung meiner Amazon-Athena-Abfragen so lange?

Lesedauer: 4 Minute
0

Die Ausführung meiner Amazon-Athena-Abfragen dauert sehr lange. Die Wartezeiten für Abfragen sind hoch. Wie kann ich die Bearbeitung von Anfragen beschleunigen?

Kurzbeschreibung

Athena ist ein Serverless interaktiver Abfragedienst. Nachdem Sie Ihre Anfragen an Athena gesendet haben, werden die Abfragen in einem Pool von Ressourcen im Backend ausgeführt. Diese Ressourcen werden von allen Benutzern in der Region gemeinsam genutzt. Ihre Abfragen befinden sich möglicherweise vorübergehend in der Warteschlange, bevor sie ausgeführt werden. Die Ausführung von Abfragen dauert im Allgemeinen sehr lange, wenn entweder die Warteschlangenzeit oder die Verarbeitungszeit der Engine höher ist.

Behebung

Rufen Sie die GetQueryExecution-API für Ihre Abfrage-ID auf. Diese API gibt Informationen über eine einzelne Verarbeitung der Abfrage aus. Die Informationen enthalten nützliche Details wie die folgenden:

  • Von der Abfrage in der Warteschlange verbrachte Zeit (QueryQueueTimeInMillis)
  • Von der Abfrage in der Planung verbrachte Zeit (QueryPlanningTimeInMillis)
  • Verarbeitungszeit der Engine (EngineExecutionTimeInMillis)

Diese Informationen können im Parameter **Statistik ** der API-Antwort eingesehen werden.

Längere Wartezeit

Ihre Abfragen haben möglicherweise aufgrund eines hohen Ressourcenverbrauchs im Backen eine längere Wartezeit. Die Wartezeit in Athena hängt von der Ressourcenzuweisung ab. Nachdem Sie Ihre Anfragen an Athena gesendet haben, werden die Anfragen bearbeitet, indem Ressourcen auf der Grundlage der folgenden Elemente zugewiesen werden:

  • Gesamtauslastung des Dienstes
  • Anzahl der eingehenden Anfragen

Wenn Ihre Abfragen eine längere Wartezeit haben, gehen Sie wie folgt vor, um die Abfrageleistung zu verbessern:

  1. Erwägen Sie, Ihre Abfragen über einen bestimmten Zeitraum zu verteilen. Wenn Sie Abfragen stapelweise versenden, senden Sie häufiger kleine Stapel, als weniger oft größere Stapel. Dies kann die Zeit reduzieren, in der eine Abfrage im Status WARTET verbleibt, und die Gesamtverarbeitungszeit der Abfrage verbessern.
  2. Führen Sie eine Kombination aus einfachen und komplexen Abfragen aus, anstatt eine Reihe komplexer Abfragen gleichzeitig auszuführen. Erwägen Sie außerdem, zuerst einfache Abfragen zu senden, gefolgt von komplexen Abfragen. Da einfache Abfragen schnell verarbeitet werden, können Ressourcen den komplexen Abfragen zugewiesen werden, ohne dass eine längere Wartezeit anfällt.
  3. Wenn Sie Ihre Abfragen in Szenarien planen, z. B. das Generieren von regelmäßigen Berichten oder das Laden neuer Partitionen, sollten Sie es vermeiden, sie zu Beginn der Stunde und 30 Minuten nach Ablauf der Stunde zu planen. Die meisten automatisierten Skripts und Cronjobs werden in diesen Zeiträumen ausgeführt. Daher ist die Betriebslast in diesen Zeiträumen normalerweise höher, was zu längeren Wartezeiten führt.
  4. Wenn Ihr Anwendungsfall dies zulässt, führen Sie Ihre Abfragen in mehreren Regionen aus. Dies kann die Last verteilen und helfen, mehr Backend-Ressourcen zu erhalten. Dieser Ansatz kann die Wartezeit für Abfragen reduzieren.
    **Wichtig:**Möglicherweise fallen regionsübergreifende Gebühren für Amazon Simple Storage Service (Amazon S3) an.

Längere Planungszeit

Wenn für Ihre Abfragen eine längere Planungszeit erforderlich ist, kann dies an einer Überpartitionierung der Tabelle liegen. Tabellen mit Hunderten oder Tausenden von Partitionen können zu einer langsameren Abfrageverarbeitung führen. Versuchen Sie eine oder mehrere der folgenden Methoden, um die Abfrageleistung zu verbessern:

  • Erwägen Sie, die Anzahl der Partitionen zu reduzieren.
  • Fragen Sie jeweils eine Partition ab und verketten Sie die Ergebnisse.
  • Verwenden Sie die Partitionsprojektion, um die Abfrageverarbeitung hochgradig partitionierter Tabellen zu beschleunigen und die Partitionsverwaltung zu automatisieren.

Längere Verarbeitungszeit

Wenn Ihre Abfragen eine längere Verarbeitungszeit der Engine haben, gehen Sie wie folgt vor, um die Abfrageleistung zu verbessern:

  1. Partitionieren Sie Ihre Tabellen, um die Menge der Daten zu begrenzen, die bei jeder Abfrage gescannt werden. Partitionen fungieren als virtuelle Spalten und halten verwandte Daten auf der Grundlage von Spaltenwerten zusammen. Die Partitionierung Ihrer Tabellen kann die Abfrageleistung verbessern und die Kosten senken. Weitere Informationen finden Sie unter Partitionierung von Daten.
  2. Wenn die Amazon-S3-Datei, die Sie abfragen, klein ist (in der Regel weniger als 128 MB), ist die Abfrageverarbeitungszeit möglicherweise höher. Der Zeitaufwand ist auf den Aufwand zurückzuführen, der mit Aufgaben wie dem Öffnen der S3-Datei, dem Auflisten von Verzeichnissen und dem Einrichten der Datenübertragung verbunden ist. Verwenden Sie das Dienstprogramm S3DistCP auf Amazon EMR, um kleinere S3-Dateien zu größeren Objekten zu kombinieren. Größere Objekte erfordern weniger Amazon-S3-Anfragen, wodurch die Abfrageverarbeitungszeit reduziert wird.
  3. Führen Sie weitere Speicher- und Abfrageoptimierungen durch, um die Leistung zu verbessern und die Verarbeitungszeiten der Engine zu verkürzen. Weitere Informationen finden Sie unter Die 10 wichtigsten Tipps zur Leistungsoptimierung für Amazon Athena.

Hinweis: Sie können auf der Grundlage der Standardkontingente für Abfragen in Ihrer Region mehrere Abfragen gleichzeitig an Athena senden. Athena verarbeitet Anfragen, indem es Ressourcen auf der Grundlage der Gesamtauslastung des Dienstes und der Anzahl der eingehenden Anfragen zuweist. Daher werden möglicherweise nicht alle Ihre eingereichten Abfragen gleichzeitig ausgeführt.


Weitere Informationen

Leistungssteigerung in Athena

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren