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
Optimalizuje rozložení dat Delta Lake. Volitelně můžete optimalizovat podmnožinu dat nebo kolaciovat data podle sloupce. Pokud nezadáte kolokaci a tabulka není definována pomocí tekutého seskupování, provede se optimalizace uspořádání.
Syntaxe
OPTIMIZE table_name [FULL] [WHERE predicate]
[ZORDER BY (col_name1 [, ...] ) ]
Poznámka:
- Bin-packing optimalizace je idempotentní, což znamená, že pokud je spuštěna dvakrát na stejné datové sadě, druhé spuštění nemá žádný vliv. Cílem je vytvořit rovnoměrně vyvážené datové soubory s ohledem na jejich velikost na disku, ale nikoli nutně s ohledem na počet záznamů na soubor. Tyto dvě míry ale nejčastěji korelují.
- Pořadí Z-Ordering není idempotentní, ale snaží se být přírůstkovou operací. Doba potřebná pro řazení Z není zaručena, že se zkrátí během více spuštění. Pokud se ale do oddílu, který byl právě Z-řazen, nepřidala žádná nová data, nebude mít další Z-řazení tohoto oddílu žádný vliv. Cílem je vytvořit rovnoměrně vyvážené datové soubory s ohledem na počet n-tic, ale ne nutně velikost dat na disku. Dvě míry jsou nejčastěji korelovány, ale mohou nastat situace, kdy tomu tak není, což vede ke zkreslení času optimalizace úloh.
Poznámka:
Při použití Databricks Runtime k řízení velikosti výstupního souboru nastavte konfiguraci Spark. Výchozí hodnota je 1073741824, která nastaví velikost na 1 GB. Zadáním hodnoty 104857600 nastavíte velikost souboru na 100 MB.
Důležité
Při změně kodeku komprese tabulky pomocí delta.parquet.compression.codec vlastnosti se stávající datové soubory automaticky nekomprimují. Pokud chcete rekomprimovat existující data s vybraným formátem komprese, spusťte OPTIMIZE table_name FULL (Databricks Runtime 16.0 a novější):
-- Change compression codec
ALTER TABLE table_name SET TBLPROPERTIES ('delta.parquet.compression.codec' = 'ZSTD');
-- Recompress all existing data files
OPTIMIZE table_name FULL;
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á mohla být dříve clusterována (pro tabulky využívající liquidní clustering).
- Překódovat stávající datové soubory, když změníte kompresní kodek tabulky pomocí vlastnosti
delta.parquet.compression.codec.
WHEREOptimalizujte podmnožinu řádků odpovídajících danému oddílovému predikátu. Podporují se pouze filtry zahrnující atributy klíče oddílu.
Tuto klauzuli nelze použít u tabulek, které používají liquid clustering.
ZORDER BYUmístěte informace o sloupci ve stejné sadě souborů. Algoritmy Delta Lake pro přeskakování dat využívají společné umístění, aby výrazně snížily množství dat, která je potřeba přečíst. Pro
ZORDER BYmůžete zadat více sloupců jako seznam oddělený čárkami. Efektivita lokality se ale snižuje s každým dalším sloupcem.Tuto klauzuli nelze použít u tabulek, které používají liquid clustering.
Příklady
> OPTIMIZE events;
> OPTIMIZE events FULL;
> OPTIMIZE events WHERE date >= '2017-01-01';
> OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType);
Další informace o příkazu OPTIMIZE naleznete v tématu Optimalizace rozložení datového souboru.