Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Databricks SQL
Databricks Runtime
OPTIMIZE optimalizuje rozložení dat Delta Lake. Můžete optimalizovat podmnožinu dat nebo kolaciovat data podle sloupce. Pokud nezadáte kolokaci a tabulka nepoužívá clustering liquid, Delta Lake provede optimalizaci při balení přihrádek.
Syntaxe
OPTIMIZE table_name [FULL] [WHERE predicate]
[ZORDER BY (col_name1 [, ...] ) ]
Poznámka:
Optimalizace při balení přihrádky je idempotentní: pokud ji spustíte dvakrát ve stejné sadě dat, druhé spuštění nemá žádný vliv. Vytváří rovnoměrně vyvážené datové soubory s ohledem na jejich velikost na disku, ale nemusí nutně počet řazených kolekcí členů na soubor. Dvě míry jsou nejčastěji korelovány.
Pořadí vykreslování není idempotentní, ale funguje postupně. Doba, po které trvá řazení Z, není zaručeno, že se sníží po více spuštěních. Pokud se ale do oddílu, který byl jen Z-Order, nepřidali žádná nová data, spuštění řazení Z na tomto oddílu nemá žádný vliv. Pořadí vykreslování vytváří rovnoměrně vyvážené datové soubory s ohledem na počet řazených kolekcí členů, ale ne nutně velikost dat na disku. Tyto dvě míry jsou nejčastěji korelovány, ale při rozbíhají se nerovnoměrné distribuci doby úloh optimalizace.
Poznámka:
Při použití databricks Runtime k řízení velikosti výstupního souboru nastavte konfiguraci spark.databricks.delta.optimize.maxFileSize. Výchozí hodnota je 1073741824 (1 GB).
104857600 Zadání nastaví velikost souboru na 100 MB.
Parametry
-
Identifikuje existující tabulku Delta. Název nesmí obsahovat dočasnou specifikaci ani specifikaci možností.
FULLPlatí pro:
Databricks Runtime 16.0 a vyššíPřepíše všechny datové soubory v tabulce. Použít
OPTIMIZE table_name FULLk:- Optimalizujte celou tabulku, včetně dat, která byla dříve clusterovaná (pro tabulky využívající clustering liquid).
- Překódovat stávající datové soubory, když změníte kompresní kodek tabulky pomocí vlastnosti
delta.parquet.compression.codec.
Pokud chcete rekomprimovat existující data po změně komprimačního kodeku, spusťte
OPTIMIZE table_name FULLpříkaz :-- Change compression codec ALTER TABLE table_name SET TBLPROPERTIES ('delta.parquet.compression.codec' = 'ZSTD'); -- Recompress all existing data files OPTIMIZE table_name FULL;Pokud chcete optimalizovat podmnožinu souborů v tabulce s povoleným clusteringem liquid, zkombinujte
FULLs predikátemWHERE(Databricks Runtime 18.1 a vyšší). Podporují se pouze jednoduché predikáty rozsahu v jednom sloupci clusteringu. Soubor je zahrnutý, pokud se některá část jeho rozsahu překrývají s predikátem. Obsahuje například soubor s rozsahemOPTIMIZE events FULL WHERE date > 15,(col_min = 10, col_max = 20)protože se rozsah souboru překrývají s predikátem.WHEREOptimalizuje podmnožinu řádků odpovídajících predikátu oddílu nebo clusteringu. Podporují se pouze filtry pro atributy klíče oddílu nebo clusteringu.
Pro tabulky, které používají clustering liquid, použijte
OPTIMIZE table_name FULL WHERE predicatemísto toho (Databricks Runtime 18.1 a vyšší).ZORDER BYPoznámka:
Databricks místo řazení Z doporučuje clustering liquid pro všechny nové tabulky. Viz Použití metody 'liquid clustering' pro tabulky.
Shromáždí informace o sloupcích ve stejné sadě souborů. Algoritmy pro přeskočení dat Delta Lake využívají společné umístění ke snížení množství dat, která je potřeba číst. Jako seznam oddělený čárkami můžete zadat více sloupců, ale efektivita společné lokality se s každým dalším sloupcem snižuje.
Tuto klauzuli nemůžete použít u tabulek, které používají clustering liquid.
Příklady
> OPTIMIZE events;
> OPTIMIZE events FULL;
> -- Partitioned table
> OPTIMIZE events WHERE date >= '2017-01-01';
> -- Table with liquid clustering enabled (DBR 18.1 and above)
> OPTIMIZE events FULL WHERE date >= '2025-01-01';
> OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType);
Další informace naleznete v tématu Optimalizace rozložení datového souboru.