Přeskakování dat

Note

Databricks Runtime 13.3 a novější společnost Databricks doporučuje používat kapalinové shlukování pro rozložení tabulky. Klasifikace není kompatibilní s řazením podle Z. Viz Použití metody 'liquid clustering' pro tabulky.

Statistiky přeskakování dat se automaticky shromažďují při zapisování dat do tabulky Delta Lake nebo spravované tabulky Apache Iceberg. Azure Databricks používá statistiku jednotlivých souborů (minimální a maximální hodnoty, počty null a celkový počet záznamů) v době dotazu k vynechání irelevantních souborů a zrychlení dotazů.

Je nutné shromáždit statistiky pro sloupce, které se používají v ZORDER příkazech. Viz Co je to řazení Z?

Zadejte sloupce statistiky

V případě externích tabulek v katalogu Unity se ve výchozím nastavení shromažďují statistiky u prvních 32 sloupců definovaných ve schématu tabulky. U spravovaných tabulek v Katalogu Unity se statistiky přeskakování souborů volí inteligentně pomocí prediktivní optimalizace a nemají limit 32 sloupců. Prediktivní optimalizace se spouští automaticky ANALYZE, příkaz pro shromažďování statistik. 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í optimalizaci pro spravované tabulky v katalogu Unity .

Pokud nepoužíváte prediktivní optimalizaci, můžete upravit chování, které omezuje shromažďování statistik na 32 sloupců, nastavením jedné z následujících vlastností tabulky:

Vlastnost tabulky Podporováno prostředí Databricks Runtime Description
dataSkippingNumIndexedCols Všechny podporované verze Databricks Runtime Zvyšte nebo snižte počet sloupců, u kterých se shromažďují statistiky. Závisí na pořadí sloupců.
dataSkippingStatsColumns Databricks Runtime 13.3 LTS a vyšší Zadejte seznam názvů sloupců, pro které se shromažďují statistiky. Nahrazuje dataSkippingNumIndexedCols.

Vlastnosti tabulky lze nastavit při vytváření tabulky nebo pomocí příkazů ALTER TABLE. Viz referenční informace k vlastnostem tabulky. Následující příklad mění výchozí chování sběru statistik pro nastavení sběru statistik na vybraných sloupcích.

Delta Lake

ALTER TABLE table_name SET TBLPROPERTIES('delta.dataSkippingStatsColumns' = 'col1, col2, col3')

Ledová tabulka

ALTER TABLE table_name SET TBLPROPERTIES('iceberg.dataSkippingStatsColumns' = 'col1, col2, col3')

Aktualizace těchto vlastností automaticky nepřepočítá statistiky pro existující data. Místo toho ovlivňuje chování budoucí shromažďování statistik při přidávání nebo aktualizaci dat v tabulce. Statistiky se nepoužívají pro sloupce, které nejsou zahrnuté v aktuálním seznamu sloupců statistiky.

Pokud jste ve službě Databricks Runtime 14.3 LTS a vyšší změnili vlastnosti tabulky nebo změnili zadané sloupce statistiky, můžete ručně aktivovat přepočítací statistiku pro tabulku pomocí následujícího příkazu:

ANALYZE TABLE table_name COMPUTE DELTA STATISTICS

Note

Dlouhé řetězce jsou během shromažďování statistik zkráceny. Můžete se rozhodnout vyloučit dlouhé řetězcové sloupce z kolekce statistik, zejména pokud se sloupce nepoužívají často pro filtrování dotazů.

Co je řazení Z?

Note

Databricks doporučuje používat liquid clustering pro všechny nové tabulky. V kombinaci s kapalinovým shlukováním se nedá použít ZORDER . Viz Použití metody 'liquid clustering' pro tabulky.

Z-ordering je technika k umístění souvisejících informací ve stejné sadě souborů. Algoritmy přeskakování dat v Azure Databricks automaticky využívají tuto kolokalitu. Toto chování snižuje množství dat, která je potřeba číst. Chcete-li data uspořádat pomocí Z-order, zadejte sloupce, podle kterých se má v klauzuli ZORDER BY seřadit:

OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)

Pokud očekáváte, že se sloupec běžně používá v predikátech dotazů a pokud má tento sloupec vysokou kardinalitu (tj. velký počet jedinečných hodnot), použijte ZORDER BY.

Pro ZORDER BY můžete zadat více sloupců jako seznam oddělený čárkami. Účinnost však klesne s každým sloupcem navíc.

Databricks doporučuje nepoužívat ZORDER BY sloupce, které nemají shromážděné statistiky, protože je neefektivní a používá nepotřebné výpočetní prostředky. Přeskakování dat vyžaduje statistiky na úrovni sloupce, jako jsou min, max a počet. Shromažďování statistik pro určité sloupce můžete nakonfigurovat tak, že změníte pořadí sloupců ve schématu, nebo můžete zvýšit počet sloupců pro shromažďování statistik.

Note

  • Řazení Z není idempotentní , ale má za cíl být přírůstkovou operací. Není zaručeno, že se doba potřebná pro uspořádání Z-order bude při opakovaných spuštěních zkracovat. Pokud však do oddílu, který byl právě uspořádán metodou Z-order, nebyla přidána žádná nová data, další uspořádání tohoto oddílu metodou Z-order nemá žádný účinek.

  • Z-ordering má za cíl vytvářet rovnoměrně vyvážené datové soubory s ohledem na počet tuplů, nikoli však nutně s ohledem na velikost dat v úložišti. Přestože velikosti souborů a počet ntic spolu korelují, mohou nastat situace, kdy tomu tak není, což zkresluje dobu trvání optimalizačních úloh.

    Pokud například ZORDER BY a nejnovější záznamy jsou mnohem širší (například delší matice nebo řetězcové hodnoty) než ty v minulosti, OPTIMIZE můžou být doby trvání úloh a výsledné velikosti souborů zkreslené. Jedná se ale pouze o problém samotného OPTIMIZE příkazu, který pravděpodobně nemá žádné negativní účinky na následné dotazy.