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.
Prediktivní optimalizace se automaticky spouští OPTIMIZE ve spravovaných tabulkách katalogu Unity. Databricks doporučuje povolit prediktivní optimalizaci pro všechny spravované tabulky Katalogu Unity, aby se zjednodušila údržba dat a snížily náklady na úložiště. Viz Prediktivní optimalizace spravovaných tabulek v katalogu Unity.
Příkaz OPTIMIZE přepíše datové soubory, aby se zlepšilo rozložení dat pro tabulky Delta. Pro tabulky s povoleným seskupováním pomocí liquid clusteringu, OPTIMIZE přepisuje datové soubory, aby seskupily data podle klíčů liquid clusteringu. Pro tabulky s definovanými oddíly se v rámci oddílů provádí komprimace souborů a rozložení dat.
Tabulky bez clusteringu liquid můžou volitelně obsahovat ZORDER BY klauzuli pro zlepšení clusteringu dat při přepsání. Databricks doporučuje používat liquid clustering místo oddílů, ZORDER nebo jiných přístupů k rozložení dat.
Viz OPTIMIZE.
Důležitý
V Databricks Runtime 16.0 a novějších můžete pomocí OPTIMIZE FULL vynutit nové seskupení pro tabulky s povoleným liquid clusteringem. Viz Vynucení přeuspořádání pro všechny záznamy.
Příklady syntaxe
Komprimace se aktivuje spuštěním OPTIMIZE příkazu:
SQL
OPTIMIZE table_name
Python
from delta.tables import *
deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().executeCompaction()
Scala
import io.delta.tables._
val deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().executeCompaction()
Pokud máte velké množství dat a chcete optimalizovat jenom podmnožinu, můžete zadat volitelný predikát oddílu pomocí WHERE:
SQL
OPTIMIZE table_name WHERE date >= '2022-11-18'
Python
from delta.tables import *
deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().where("date='2021-11-18'").executeCompaction()
Scala
import io.delta.tables._
val deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().where("date='2021-11-18'").executeCompaction()
Poznámka:
- Optimalizace balicích binů je idempotentní, což znamená, že pokud je spuštěna dvakrát na stejné datové sadě, druhé spuštění nemá žádný vliv.
- Bin-packing se snaží vytvořit rovnoměrně vyvážené datové soubory ve vztahu k jejich velikosti na disku, ale ne nutně co do počtu záznamů v jednotlivých souborech. Tyto dvě míry ale nejčastěji korelují.
- Python a Scala API pro provádění
OPTIMIZEoperace jsou dostupné od Databricks Runtime 11.3 LTS a více.
Čtenáři tabulek Delta používají snímkovou izolaci, což znamená, že nejsou přerušeni při OPTIMIZE odebrání nepotřebných souborů z transakčního protokolu.
OPTIMIZE neprovádí žádné změny související s tabulkou, takže čtení před a po OPTIMIZE provedení má stejné výsledky. Provádění OPTIMIZE s tabulkou, která je zdrojem streamování, nemá vliv na aktuální ani budoucí datové proudy, které tuto tabulku považují za zdroj.
OPTIMIZE vrátí statistiku souboru (min, maximum, součet atd.) pro odebrané soubory a soubory přidané operací. Statistiky optimalizace také obsahují statistiky Z-Orderingu, počet dávek a optimalizované části.
Malé soubory můžete také automaticky komprimovat pomocí automatického komprimace. Viz Automatickou kompakci pro Delta Lake v Azure Databricks.
Jak často mám běžet OPTIMIZE?
Povolte prediktivní optimalizaci spravovaných tabulek Katalogu Unity, abyste zajistili, že OPTIMIZE se automaticky spustí, když je nákladově efektivní.
Když zvolíte, jak často má OPTIMIZE běžet, musíte vyvážit výkon a náklady. Pokud chcete dosáhnout lepšího výkonu dotazů koncových uživatelů, spusťte OPTIMIZE častěji. Z důvodu zvýšeného využití prostředků to bude zvyšovat náklady. Pokud chcete optimalizovat náklady, spusťte ho méně často.
Databricks doporučuje, abyste začali spouštět OPTIMIZE každý den a pak upravte frekvenci, aby se vyrovnály kompromisy mezi náklady a výkonem.
Jaký je nejlepší typ instance pro spuštění OPTIMIZE (pro balení do přihrádek a řazení podle Z)?
Obě operace náročné na procesor provádějí velké množství dekódování a kódování formátu Parquet.
Databricks doporučuje typy instancí optimalizovaných pro výpočty.
OPTIMIZE také využívá připojené disky SSD.