Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
I Databricks Runtime 13.3 och senare rekommenderar Databricks att du använder flytande klustring för tabelllayout. Klustring är inte kompatibelt med Z-ordering. Se Använda flytande klustring för tabeller.
Statistik för dataöverhoppning samlas in automatiskt när du skriver data till en Delta Lake- eller hanterad Apache Iceberg-tabell. Azure Databricks använder statistik per fil (lägsta och högsta värden, antal null och totalt antal poster) vid frågetillfället för att hoppa över irrelevanta filer och påskynda frågor.
Du måste ha insamlad statistik för kolumner som används i ZORDER-satser. Se Vad är Z-beställning?.
Ange statistik kolumner
För externa Unity Catalog-tabeller samlas statistik in på de första 32 kolumnerna som definieras i tabellschemat som standard. För hanterade tabeller i Unity Catalog väljs statistik för att hoppa över filer intelligent med hjälp av prediktiv optimering och har ingen gräns på 32 kolumner. Förutsägelseoptimering kör ANALYZEautomatiskt , ett kommando för att samla in statistik. Databricks rekommenderar att du aktiverar förutsägande optimering för alla hanterade Unity Catalog-tabeller för att förenkla dataunderhållet och minska lagringskostnaderna. Se Förutsägande optimering för hanterade Unity Catalog-tabeller.
Om du inte använder förutsägelseoptimering kan du ändra det beteende som begränsar statistiksamlingar till 32 kolumner genom att ange någon av följande tabellegenskaper:
| Tabelleegenskap | Databricks Runtime stöds | Description |
|---|---|---|
dataSkippingNumIndexedCols |
Alla Databricks Runtime-versioner som stöds | Öka eller minska antalet kolumner där statistik samlas in. Beror på kolumnordning. |
dataSkippingStatsColumns |
Databricks Runtime 13.3 LTS och senare | Ange en lista med kolumnnamn som statistik samlas in för. Ersätter dataSkippingNumIndexedCols. |
Tabellegenskaper kan anges när tabellen skapas eller med ALTER TABLE -instruktioner. Se Referens för tabellegenskaper. I följande exempel åsidosätts standardbeteendet för statistikinsamling för att ange statistiksamling på namngivna kolumner:
Delta Lake
ALTER TABLE table_name SET TBLPROPERTIES('delta.dataSkippingStatsColumns' = 'col1, col2, col3')
Isbergsbord
ALTER TABLE table_name SET TBLPROPERTIES('iceberg.dataSkippingStatsColumns' = 'col1, col2, col3')
Uppdatering av dessa egenskaper återberäknar inte statistik automatiskt för befintliga data. I stället påverkar det beteendet för framtida statistikinsamling när du lägger till eller uppdaterar data i tabellen. Statistik används inte för kolumner som inte ingår i den aktuella listan med statistikkolumner.
Om du har ändrat tabellegenskaperna eller ändrat de angivna kolumnerna för statistik i Databricks Runtime 14.3 LTS och senare kan du manuellt utlösa omberäkning av statistik för en tabell med hjälp av följande kommando:
ANALYZE TABLE table_name COMPUTE DELTA STATISTICS
Anmärkning
Långa strängar avkortas vid insamling av statistik. Du kan välja att undanta långa strängkolumner från statistiksamlingen, särskilt om kolumnerna inte används ofta för filtrering av frågor.
Vad är Z-ordning?
Anmärkning
Databricks rekommenderar att du använder flytande kluster för alla nya tabeller. Du kan inte använda ZORDER i kombination med flytande klustring. Se Använda flytande klustring för tabeller.
Z-ordering är en teknik för att samlagra relaterad information i samma uppsättning filer. Azure Databricks-algoritmer som hoppar över data använder automatiskt den här samlokaliseringen. Det här beteendet minskar mängden data som behöver läsas. För att Z-ordna data, ange kolumnerna som ska ordnas på i ZORDER BY-satsen:
OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)
Om du förväntar dig att en kolumn ska användas ofta i frågepredikat och om kolumnen har hög kardinalitet (dvs. ett stort antal distinkta värden) använder ZORDER BYdu .
Du kan ange flera kolumner för ZORDER BY som en kommaavgränsad lista. Effektiviteten sjunker dock med varje extra kolumn.
Databricks rekommenderar att du inte använder ZORDER BY på kolumner som inte har statistik insamlad eftersom den är ineffektiv och använder onödiga beräkningsresurser. Datahopp kräver kolumnlokal statistik som min, max och antal. Du kan konfigurera statistikinsamling för vissa kolumner genom att ordna om kolumner i schemat, eller så kan du öka antalet kolumner att samla in statistik om.
Anmärkning
Z-ordering är inte idempotent men är avsedd att vara en inkrementell operation. Tiden det tar för Z-ordering minskar inte nödvändigtvis vid upprepade körningar. Men om inga nya data har lagts till i en partition som nyligen Z-ordnats, har ytterligare Z-ordning av partitionen ingen effekt.
Z-ordning syftar till att skapa jämnt balanserade datafiler med avseende på antalet tupler, men inte nödvändigtvis storleken på data i lagringen. Även om filstorlekar och antalet tupplar är korrelerade kan det finnas situationer när de inte är det, vilket förvränger optimeringen av aktivitetstiderna.
Om du
ZORDER BYtill exempel daterar och dina senaste poster är mycket bredare (till exempel längre matriser eller strängvärden) än de tidigare,OPTIMIZEkan jobbets aktivitetsvaraktigheter och de resulterande filstorlekarna bli missvisande. Detta är dock bara ett problem förOPTIMIZEsjälva kommandot. Det har förmodligen inga negativa effekter på efterföljande frågor.