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.
Iceberg-Tabellen optimieren
Athena bietet mehrere Optimierungsfunktionen, um die Abfrageleistung in Apache Iceberg-Tabellen zu verbessern. Wenn sich Daten ansammeln, können Abfragen aufgrund des erhöhten Dateiverarbeitungsaufwands und der Rechenkosten für die Durchführung von Löschvorgängen auf Zeilenebene, die in Iceberg-Löschdateien gespeichert sind, an Effizienz verlieren. Um diesen Herausforderungen zu begegnen, unterstützt Athena das manuelle Verdichten und Absaugen, um die Tischstruktur zu optimieren. Athena arbeitet auch mit Iceberg-Statistiken, um eine kostenbasierte Abfrageoptimierung und die Parquet-Spaltenindizierung für eine präzise Datenbereinigung während der Abfrageausführung zu ermöglichen. Diese Funktionen arbeiten zusammen, um die Ausführungszeit von Abfragen zu verkürzen, das Scannen von Daten zu minimieren und die Kosten zu senken. In diesem Thema wird beschrieben, wie Sie diese Optimierungsfunktionen verwenden, um Abfragen mit hoher Leistung in Ihren Iceberg-Tabellen aufrechtzuerhalten.
OPTIMIZE
Die OPTIMIZE -Verdichtungsaktion schreibt Datendateien basierend auf ihrer Größe und Anzahl der zugehörigen Löschdateien in ein optimierteres Layout um. Einzelheiten zur Syntax und Tabelleneigenschaften finden Sie unter OPTIMIZE.table REWRITE DATA
Beispiel
Im folgenden Beispiel werden Löschdateien in Datendateien zusammengeführt und Dateien in der Nähe der Zieldateigröße erstellt, bei denen der Wert von category c1 ist.
OPTIMIZE iceberg_table REWRITE DATA USING BIN_PACK WHERE category = 'c1'
VACUUM
VACUUM führt den Snapshot-Ablauf
Beispiel
Im folgenden Beispiel wird eine Tabelleneigenschaft verwendet, um die Tabelle iceberg_table so zu konfigurieren, dass die Daten der letzten drei Tage beibehalten werden. Anschließend verwendet es VACUUM, um die alten Snapshots ablaufen zu lassen und die verwaisten Dateien aus der Tabelle zu entfernen.
ALTER TABLE iceberg_table SET TBLPROPERTIES ( 'vacuum_max_snapshot_age_seconds'='259200' ) VACUUM iceberg_table
Verwenden Sie Iceberg-Tabellenstatistiken
Der kostenbasierte Optimierer von Athena verwendet Iceberg-Statistiken, um optimale Abfragepläne zu erstellen. Wenn Statistiken für Ihre Iceberg-Tabellen generiert wurden, verwendet Athena diese Informationen automatisch, um intelligente Entscheidungen über die Reihenfolge der Verknüpfungen, die Filter und das Aggregationsverhalten zu treffen, wodurch häufig die Abfrageleistung verbessert und die Kosten gesenkt werden.
Iceberg-Statistiken sind standardmäßig aktiviert, wenn Sie S3-Tabellen verwenden. Für andere Iceberg-Tabellen verwendet Athena die Tabelleneigenschaft, use_iceberg_statistics um zu bestimmen, ob Statistiken zur kostenbasierten Optimierung genutzt werden sollen. Informationen zum Einstieg finden Sie unter Optimieren der Abfrageleistung mithilfe von Spaltenstatistiken im AWS Glue Benutzerhandbuch oder verwenden Sie die Athena-Konsole, um On-Demand-Statistiken für Ihre Iceberg-Tabellen zu generieren.
Verwenden Sie die Parquet-Spaltenindizierung
Die Parquet-Spaltenindizierung ermöglicht es Athena, während der Abfrageausführung eine genauere Datenbereinigung durchzuführen, indem zusätzlich zu den Statistiken auf Zeilengruppenebene auch min/max Statistiken auf Seitenebene genutzt werden. Dadurch kann Athena überflüssige Seiten innerhalb von Zeilengruppen überspringen, wodurch die Menge der gescannten Daten erheblich reduziert und die Abfrageleistung verbessert wird. Es eignet sich am besten für Abfragen mit selektiven Filterprädikaten für sortierte Spalten. Dadurch werden sowohl die Ausführungszeit als auch die Effizienz des Datenscans verbessert und gleichzeitig die Datenmenge reduziert, die Athena aus Amazon S3 lesen muss.
Athena verwendet standardmäßig Parquet-Spaltenindizes mit S3-Tabellen, wenn Spaltenindizes in den zugrunde liegenden Parquet-Dateien vorhanden sind. Für andere Iceberg-Tabellen verwendet Athena die use_iceberg_parquet_column_index Eigenschaft, um zu bestimmen, ob die Spaltenindizes in der Parquet-Datei verwendet werden sollen. Stellen Sie diese Tabelleneigenschaft mithilfe der AWS Glue Konsole oder der API ein. UpdateTable