OPTIMIZE
Gäller för: Databricks SQL 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 samgruppering och tabellen inte har definierats med flytande klustring utförs bin-packning optimering.
Syntax
OPTIMIZE table_name [FULL] [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 just Z-Sorterades, kommer en ytterligare Z-sortering 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 för att styra utdatafilens storlek anger du Spark-konfigurationenspark.databricks.delta.optimize.maxFileSize
. Standardvärdet är 1073741824
, som anger storleken till 1 GB. Om du anger värdet 104857600
anges filstorleken till 100 MB.
Parametrar
-
Identifierar en befintlig Delta-tabell. Namnet får inte innehålla en temporal specifikation eller alternativspecifikation.
FULL
Gäller för: Databricks Runtime 16.0 och senare
Optimera hela tabellen inklusive data som tidigare kan ha klustrats. Den här satsen kan bara anges för tabeller som använder flytande klustring.
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 klausulen på 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 klausulen på tabeller som använder flytande klustring.
Exempel
> OPTIMIZE events;
> OPTIMIZE events FULL;
> OPTIMIZE events WHERE date >= '2017-01-01';
> OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType);
Mer information om kommandot OPTIMIZE
finns i Optimera datafillayout.