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 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.maxFileSize
fö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
-
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.