Verwenden Sie den kostenbasierten Optimierer - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden Sie den kostenbasierten Optimierer

Sie können das CBO-Feature (Kostenbasierter Optimierer) in Athena SQL verwenden, um Ihre Abfragen zu optimieren. Sie können optional anfordern, dass Athena Statistiken auf Tabellen- oder Spaltenebene für eine Ihrer Tabellen in AWS Glue sammelt. Wenn alle Tabellen in Ihrer Abfrage Statistiken enthalten, verwendet Athena die Statistiken, um einen Ausführungsplan zu erstellen, den es für den leistungsfähigsten hält. Der Abfrageoptimierer berechnet alternative Pläne auf der Grundlage eines statistischen Modells und wählt dann den Plan aus, mit dem die Abfrage wahrscheinlich am schnellsten ausgeführt werden kann.

Statistiken zu AWS Glue Tabellen werden gesammelt und gespeichert und Athena zur Verfügung gestellt, um die AWS Glue Data Catalog Planung und Ausführung von Abfragen zu verbessern. Bei diesen Statistiken handelt es sich um Statistiken auf Spaltenebene, z. B. die Anzahl der eindeutigen Werte, die Anzahl der Nullwerte, Maximal- und Minimalwerte für Dateitypen wie Parquet, ORC, JSON, ION, CSV und XML. Amazon Athena verwendet diese Statistiken, um Abfragen zu optimieren, indem die restriktivsten Filter so früh wie möglich bei der Abfrageverarbeitung angewendet werden. Diese Filterung begrenzt die Speichernutzung und die Anzahl der Datensätze, die gelesen werden müssen, um die Abfrageergebnisse zu liefern.

In Verbindung mit CBO verwendet Athena ein Feature, das als regelbasierter Optimierer (RBO) bezeichnet wird. RBO wendet mechanisch Regeln an, von denen erwartet wird, dass sie die Abfrageleistung verbessern. RBO ist im Allgemeinen vorteilhaft, da seine Transformationen darauf abzielen, den Abfrageplan zu vereinfachen. Da RBO jedoch keine Kostenberechnungen oder Planvergleiche durchführt, erschweren kompliziertere Abfragen es RBO, einen optimalen Plan zu erstellen.

Aus diesem Grund verwendet Athena sowohl RBO als auch CBO, um Ihre Abfragen zu optimieren. Nachdem Athena Möglichkeiten zur Verbesserung der Abfrageausführung identifiziert hat, erstellt es einen optimalen Plan. Informationen zu Ausführungsplandetails finden Sie unter Ausführungspläne für SQL Abfragen anzeigen. Eine ausführliche Erläuterung der Funktionsweise von CBO finden Sie unter Beschleunigen von Abfragen mit dem kostenbasierten Optimierer in Amazon Athena im AWS Big Data-Blog.

Um Statistiken für AWS Glue Katalogtabellen zu generieren, können Sie die Athena-Konsole, die AWS Glue Konsole oder AWS Glue APIs verwenden. Da Athena in AWS Glue Catalog integriert ist, erhalten Sie automatisch die entsprechenden Verbesserungen der Abfrageleistung, wenn Sie Abfragen von Amazon Athena ausführen.

Überlegungen und Einschränkungen

  • Tabellentypen — Derzeit unterstützt die CBO-Funktion in Athena nur Hive- und Iceberg-Tabellen, die sich in der befinden. AWS Glue Data Catalog

  • Athena for Spark – Das CBO-Feature ist in Athena for Spark nicht verfügbar.

  • Preise – Informationen zur Preisgestaltung finden Sie auf der AWS Glue -Preisseite.

Generieren Sie Tabellenstatistiken mit der Athena-Konsole

In diesem Abschnitt wird beschrieben, wie Sie mit der Athena-Konsole Statistiken auf Tabellen- oder Spaltenebene für eine Tabelle in AWS Glue generieren. Informationen AWS Glue zur Generierung von Tabellenstatistiken finden Sie unter Arbeiten mit Spaltenstatistiken im AWS Glue Entwicklerhandbuch.

So generieren Sie Tabellenstatistiken mit der Athena-Konsole
  1. Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/.

  2. Wählen Sie in der Tabellenliste des Athena-Abfrageeditors die drei vertikalen Punkte für die gewünschte Tabelle aus, und wählen Sie dann Statistik generieren aus.

    Kontextmenü für eine Tabelle im Athena-Abfrageeditor.
  3. Wählen Sie im Dialogfeld Statistik generieren die Option Alle Spalten, um Statistiken für alle Spalten in der Tabelle zu generieren, oder wählen Sie Ausgewählte Spalten, um bestimmte Spalten auszuwählen. Der Standardwert ist Alle Spalten.

    Das Dialogfeld „Statistiken generieren“.
  4. Erstellen Sie für die AWS Glue Servicerolle eine vorhandene Servicerolle oder wählen Sie eine aus, um die Erlaubnis zum Generieren von Statistiken AWS Glue zu erteilen. Die AWS Glue -Servicerolle erfordert außerdem S3:GetObject-Berechtigungen für den Amazon-S3-Bucket, der die Daten der Tabelle enthält.

    Wählen Sie eine AWS Glue Servicerolle.
  5. Wählen Sie Statistik generieren. Ein Banner zum Generieren von Statistiken für table_name Benachrichtigungen zeigt den Status der Aufgabe an.

    Das Benachrichtigungsbanner beim Generieren von Statistiken.
  6. Um Details in der AWS Glue Konsole anzuzeigen, wählen Sie In Glue anzeigen.

    Informationen zum Anzeigen von Statistiken in der AWS Glue Konsole finden Sie unter Spaltenstatistiken anzeigen im AWS Glue Entwicklerhandbuch.

  7. Nach der Generierung der Statistiken wird in den Tabellen und Spalten mit Statistiken das Wort Statistik in Klammern angezeigt, wie in der folgenden Abbildung.

    Eine Tabelle mit Statistiksymbolen im Athena-Abfrageeditor.

Wenn Sie jetzt Ihre Abfragen ausführen, führt Athena eine kostenbasierte Optimierung der Tabellen und Spalten durch, für die Statistiken generiert wurden.

Aktivieren und deaktivieren Sie die Tabellenstatistiken

Wenn Sie Tabellenstatistiken für eine Iceberg-Tabelle gemäß den Schritten im vorherigen Abschnitt generieren, use_iceberg_statistics wird der Iceberg-Tabelle in automatisch eine Glue-Tabelleneigenschaft mit dem Namen Glue hinzugefügt AWS Glue Data Catalog und standardmäßig auf true gesetzt. Wenn Sie diese Eigenschaft entfernen oder auf False setzen, verwendet CBO die Iceberg-Tabellenstatistiken nicht, wenn versucht wird, den Abfrageplan während der Abfrageausführung zu optimieren, auch wenn die Statistiken von Glue generiert wurden. Weitere Hinweise zum Generieren von Tabellenstatistiken finden Sie unter. Generieren Sie Tabellenstatistiken mit der Athena-Konsole

Im Gegensatz dazu verfügen Hive-Tabellen im Glue-Datenkatalog nicht über eine ähnliche Tabelleneigenschaft, um die Verwendung von Tabellenstatistiken für CBO zu aktivieren oder zu deaktivieren. Daher verwendet CBO immer die von Glue generierten Tabellenstatistiken, wenn es darum geht, den Abfrageplan für Hive-Tabellen zu optimieren.

Weitere Ressourcen

Weitere Informationen finden Sie in der folgenden Ressource.

Enhance query performance using AWS Glue Data Catalog statistics (AWS YouTube channel)