Freigeben über


OPTIMIZE

Gilt für:durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime

Optimiert das Layout von Delta Lake-Daten. Optional können Sie eine Teilmenge der Daten optimieren oder Daten nach Spalte anordnen. Wenn Sie keine Kollokation angeben und die Tabelle nicht mit Liquid Clustering definiert ist, wird die Bin-Packing-Optimierung durchgeführt.

Syntax

OPTIMIZE table_name [FULL] [WHERE predicate]
  [ZORDER BY (col_name1 [, ...] ) ]

Hinweis

  • Die Bin-Packing-Optimierung ist idempotent. Dies bedeutet, dass bei einer zweimaligen Ausführung für dasselbe Dataset der zweite Durchlauf keine Auswirkungen hat. Ziel ist, gleichmäßige Datendateien in Bezug auf deren Größe auf dem Datenträger zu erzeugen, nicht notwendigerweise in Bezug auf die Anzahl von Tupeln pro Datei. Die beiden Kennzahlen sind jedoch sehr häufig korreliert.
  • Die Z-Reihenfolge ist nicht idempotent, sondern zielt darauf ab, ein inkrementeller Vorgang zu sein. Es ist nicht garantiert, dass sich die für die Z-Reihenfolge benötigte Zeit über mehrere Ausführungen hinweg verringert. Wenn jedoch keine neuen Daten zu einer Partition hinzugefügt wurden, auf die kurz zuvor eine Z-Reihenfolge angewendet wurde, hat eine weitere Anwendung der Z-Reihenfolge auf diese Partition keine Auswirkung. Ziel ist, gleichmäßige Datendateien in Bezug auf die Anzahl von Tupeln zu erzeugen, aber nicht notwendigerweise in Bezug auf die Datengröße auf dem Datenträger. Die beiden Kennzahlen sind in den meisten Fällen korreliert. Es kann jedoch Situationen geben, in denen dies nicht der Fall ist, was zu Abweichungen bei den Zeiten für die Optimierungsaufgaben führt.

Hinweis

Legen Sie beim Verwenden von Databricks Runtime die Spark-Konfigurationspark.databricks.delta.optimize.maxFileSize fest, um die Größe der Ausgabedatei zu steuern. Der Standardwert lautet 1073741824, wodurch die Größe auf 1 GB festgelegt wird. Durch Angeben des Werts 104857600 wird die Dateigröße auf 100 MB festgelegt.

Parameter

  • table_name

    Identifiziert eine vorhandene Delta-Tabelle. Der Name darf keine zeitliche Spezifikation oder Optionsspezifikation enthalten.

  • FULL

    Gilt für: Häkchen gesetzt ja Databricks Runtime 16.0 und höher

    Optimieren Sie die gesamte Tabelle, einschließlich Daten, die zuvor gruppiert wurden. Diese Klausel kann nur für Tabellen angegeben werden, die flüssigen Clustering verwenden.

  • WHERE

    Optimieren Sie die Teilmenge der Zeilen, die dem angegebenen Partitionsprädikat entsprechen. Es werden nur Filter unterstützt, die Partitionsschlüsselattribute enthalten.

    Sie können diese Klausel nicht für Tabellen verwenden, die Liquid Clustering verwenden.

  • ZORDER BY

    Ordnet Spalteninformationen im gleichen Dateiensatz an. Diese Colocation wird von Delta Lake-Algorithmen zum Überspringen von Daten genutzt, um die Menge der zu lesenden Daten erheblich zu reduzieren. Für ZORDER BY können Sie mehrere Spalten in Form einer durch Kommas getrennten Liste angeben. Dabei sinkt allerdings die Effizienz der Kollokation mit jeder zusätzlichen Spalte.

    Sie können diese Klausel nicht für Tabellen verwenden, die Liquid Clustering verwenden.

Beispiele

> OPTIMIZE events;

> OPTIMZIE events FULL;

> OPTIMIZE events WHERE date >= '2017-01-01';

> OPTIMIZE events
    WHERE date >= current_timestamp() - INTERVAL 1 day
    ZORDER BY (eventType);

Weitere Informationen zum Befehl OPTIMIZE finden Sie unter Optimieren des Datendateilayouts.