Best Practices

Dieses Thema enthält bewährte Verfahren für die Arbeit mit Apache Iceberg™-Tabellen in Snowflake.

Erstellen Sie genügend externe Volumes für Ihren Anwendungsfall.

Jedes externe Volume ist mit einem bestimmten Aktiver Speicherort verbunden, und ein einzelnes externes Volume kann mehrere Iceberg-Tabellen unterstützen. Die Anzahl der externen Volumes, die Sie benötigen, hängt jedoch davon ab, wie Sie Ihre Tabellendaten speichern, organisieren und sichern möchten.

Sie können ein einziges externes Volume verwenden, wenn Sie die Daten und Metadaten für alle Ihre Snowflake-Iceberg-Tabellen in Unterverzeichnissen unter demselben Speicherort (z. B. im selben S3 Bucket) haben möchten. Um diese Verzeichnisse für von Snowflake verwaltete Tabellen zu konfigurieren, siehe Daten- und Metadatenverzeichnisse.

Alternativ können Sie auch mehrere externe Volumes erstellen, um verschiedene Speicherorte unterschiedlich zu sichern. Sie könnten zum Beispiel die folgenden externen Volumes erstellen:

  • Ein externes Volume mit Lesezugriff für extern verwaltete Iceberg-Tabellen.

  • Ein externes Volume, das mit Lese- und Schreibzugriff für von Snowflake verwaltete Tabellen konfiguriert ist

Extern verwaltete Tabellen häufig aktualisieren

Um lange Aktualisierungszeiten zu vermeiden und schnell die aktuellsten Tabellendaten zu erhalten, führen Sie häufige Aktualisierungen von Iceberg-Tabellen durch, die einen externen Katalog verwenden.

Snowflake versucht, die Tabellenaktualisierungen zu optimieren, wenn der Vorgang voraussichtlich lange dauern wird. Die Aktualisierungszeit hängt jedoch letztlich von der Anzahl der Snapshots ab, die einer Tabelle zugeordnet sind, sowie von der Anzahl der Datendateien, die zu einer Tabelle gehören.

Es ist wichtig, dass Sie den Snowflake-Aktualisierungszeitplan mit den Wartungsoperationen für die Tabellen abstimmen, z. B. dem Ablaufen von Snapshots oder der Komprimierung. Aktualisieren Sie die Metadaten jedes Mal, wenn Sie eine Wartungsoperation durchführen.

Eine Anleitung dazu finden Sie unter Tabellen-Metadaten aktualisieren.

Vollständige Statistik schreiben

Um die Leistung der Abfragelaufzeit für Tabellen zu optimieren, die nicht von Snowflake verwaltet werden, stellen Sie sicher, dass die Statistiken Ihrer Parquet Datei so vollständig wie möglich sind.

Stellen Sie sicher, dass der von Ihnen verwendete Parquet-Dateischreiber (z. B. Spark oder Trino) für das Schreiben von Statistiken konfiguriert ist. Möglicherweise müssen Sie auch Ihren Writer auf die neueste Version aktualisieren.

Fehlende Statistiken wie die folgenden verschlechtern die Leistung der Abfrage:

  • Mindest- und Höchstwerte

  • Anzahl unterschiedlicher Werte (NDV). Die Anzahl der eindeutigen Werte wird verwendet, um die Verknüpfungsreihenfolge in komplexen Verknüpfungen zu bestimmen. Fehlende NDV-Statistiken können zu einer Explosion von Verknüpfungen führen.

  • Die Anzahl von NULL-Ergebnissen.

Warehouse-Größe erhöhen

Wenn Sie eine Iceberg-Tabelle erstellen, die einen externen Katalog verwendet, versucht Snowflake, Statistiken aus den Manifestdateien der Tabelle zu lesen, um eine schnellere Leistung zu erzielen.

In manchen Situationen, z. B. wenn Statistiken in den Manifestdateien fehlen oder nicht korrekt sind, durchsucht Snowflake die Tabellendateien nach Statistiken. Das Scannen einer großen Anzahl von Dateien kann die Tabellenerstellung verlangsamen. Um den Prozess der Tabellenerstellung zu beschleunigen, verwenden Sie ein größeres Warehouse, das Tabellendateien parallel durchsuchen kann.

Bemerkung

Snowflake parallelisiert das Scannen von Tabellenspalten nicht. Der Wechsel zu einem größeren Warehouse führt nicht zu einer schnelleren Laufzeit der Abfrage.

Wählen Sie die richtige Speicherserialisierungsrichtlinie für Ihren Anwendungsfall

Wählen Sie eine geeignete STORAGE_SERIALIZATION_POLICY für Ihren Anwendungsfall aus. Wenn Sie eine Snowflake-verwaltete Tabelle erstellen (oder eine Tabelle konvertieren, um Snowflake als Katalog zu verwenden), legen Sie eine Einstellung für die Serialisierung des Speichers für diese Tabelle fest. Die Serialisierungsrichtlinie teilt Snowflake mit, welche Art der Kodierung und Komprimierung für die Datendateien der Tabelle durchgeführt werden soll.

Eine ungeeignete Richtlinie kann dazu führen, dass eine Tabelle nicht mit externen Engines kompatibel ist oder die Leistung von Snowflake beeinträchtigt wird.

Weitere Informationen dazu finden Sie unter CREATE ICEBERG TABLE (Snowflake als Iceberg-Katalog).