OPTIMIZE

Gäller för:check marked yes Databricks SQL check marked yes Databricks Runtime

Optimerar layouten för Delta Lake-data. Du kan också optimera en delmängd av data eller sortera data efter kolumn. Om du inte anger sortering och tabellen inte har definierats med flytande klustring utförs optimering av lagerplatser.

Syntax

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

Kommentar

  • Optimering av bin-packning är idempotent, vilket innebär att om den körs två gånger på samma datauppsättning har den andra körningen ingen effekt. Syftet är att skapa jämnt balanserade datafiler med avseende på deras storlek på disken, men inte nödvändigtvis antalet tupplar per fil. De två åtgärderna är dock oftast korrelerade.
  • Z-beställning är inte idempotent utan syftar till att vara en inkrementell åtgärd. Den tid det tar för Z-Beställning är inte garanterat att minska över flera körningar. Men om inga nya data har lagts till i en partition som bara var Z-Sorterad, kommer en annan Z-beställning av partitionen inte att ha någon effekt. Syftet är att skapa jämnt balanserade datafiler med avseende på antalet tupplar, men inte nödvändigtvis datastorleken på disken. De två måtten är oftast korrelerade, men det kan finnas situationer när så inte är fallet, vilket leder till skevhet i optimera aktivitetstider.

Kommentar

När du använder Databricks Runtime anger du Spark-konfigurationen spark.databricks.delta.optimize.maxFileSizeför att styra utdatafilens storlek. Standardvärdet är 1073741824, som anger storleken till 1 GB. Om du anger värdet 104857600 anges filstorleken till 100 MB.

Parametrar

  • Table_name

    Identifierar en befintlig Delta-tabell. Namnet får inte innehålla någon temporal specifikation.

  • WHERE

    Optimera delmängden av rader som matchar det angivna partitionspredikatet. Endast filter som omfattar partitionsnyckelattribut stöds.

    Du kan inte använda den här satsen i tabeller som använder flytande klustring.

  • ZORDER BY

    Samla kolumninformation i samma uppsättning filer. Samlokalitet används av algoritmer för datahopp i Delta Lake för att avsevärt minska mängden data som behöver läsas. Du kan ange flera kolumner för ZORDER BY som en kommaavgränsad lista. Lokalitetens effektivitet minskar dock med varje ytterligare kolumn.

    Du kan inte använda den här satsen i tabeller som använder flytande klustring.

Exempel

> OPTIMIZE events;

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

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

Mer information om kommandot finns i OPTIMIZE Komprimera datafiler med optimering på Delta Lake.