Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Z-orden er en datalayoutteknik, der samler relaterede data i de samme filer ved at anvende en Z-orden (Morton) rumfyldningskurve over en eller flere kolonner. Teknikken strammer de min/max-intervaller, der er gemt i filniveau-statistikker, hvilket forbedrer filspring, når forespørgsler filtreres på disse kolonner.
Tip
For de fleste arbejdsbelastninger, der starter i Fabric Runtime 2.0, anbefales liquid clustering som den anbefalede strategi for datalayout. Den tilbyder fleksibel kolonnevalg, inkrementel optimering og ingen småfil-straffe fra kolonner med høj kardinalitet. Brug kun Z-Order, når du har en etableret arbejdsgang på en ældre runtime eller ikke har brug for fleksibiliteten ved væskeklyngedannelse.
For fuld vejledning om væskeklyngedannelse, se Væskeklyngedannelse.
Hvornår skal man bruge Z-Order
Brug Z-Order, når:
- Du er på Fabric Runtime 1.2 eller tidligere, hvor væskeklyngedannelse ikke er tilgængelig eller har begrænset support.
- Du har en etableret Z-Order arbejdsgang og behøver ikke at skifte kolonner ofte.
- Du ønsker filspring i flere kolonner uden at introducere partitionering.
Anvend Z-ordenen
Z-Order anvendes som en del af kommandoen OPTIMIZE . I modsætning til flydende klyngedannelse angiver du kolonnerne direkte i sætningen OPTIMIZE hver gang du kører den—kolonnerne gemmes ikke i tabelmetadata.
Tip
Fra Fabric Runtime 2.0 understøtter Native eksekveringsmotor udførelse af OPTIMIZE med ZORDER specificeret, hvilket leverer 30–50% hurtigere multidimensionel klyngeydelse. Tidligere kørselstider falder tilbage til almindelig ikke-accelereret Spark-udførelse.
Scope Z-orden med et WHERE-prædikat
Du kan tilføje en WHERE klausul for at begrænse, hvilke filer OPTIMIZE ZORDER BY der kan omskrives. Kun filer, der indeholder rækker, som matcher prædikatet, er kandidater til kompaktering og Z-ordenslayout. Klausulen WHERE er nyttig til inkrementel vedligeholdelse, for eksempel at Z-Ordering kun de nyeste data efter en indlæsningskørsel.
-- Z-Order only files that contain data from the last 7 days
OPTIMIZE sales
WHERE order_date >= current_date() - INTERVAL 7 DAYS
ZORDER BY (order_date, region)
Brugen af et WHERE prædikat reducerer mængden af data, der omskrives, hvilket sænker beregningsomkostninger og eksekveringstid. Prædikatet filtrerer baseret på filniveau-statistik, så det fungerer bedst på kolonner, der allerede har stramme min/max-intervaller pr. fil (for eksempel en datokolonne skrevet i kronologisk rækkefølge).
Z-orden med opdeling
Z-orden og partitionering kan kombineres. Når begge bruges, OPTIMIZE ZORDER BY anvendes Z-ordenslayoutet uafhængigt inden for hver partition. Kombinationen er nyttig, når du har brug for partitionering til samtidig writer-isolation og Z-Order til filspring på andre kolonner.
-- Table is partitioned by region; Z-Order by order_date within each partition
OPTIMIZE sales ZORDER BY (order_date)
Vigtige overvejelser
- Z-ordens kolonner gemmes ikke i tabelmetadata. Du skal specificere dem hver gang du kører
OPTIMIZE. - Z-Order omskriver alle berettigede filer ved hver
OPTIMIZEgennemkørsel, medmindre du giver etWHEREprædikat for at begrænse omfanget. Der findes ingen inkrementell tilstand som væskeklyngedannelse. - Z-ordens og væskeklyngedannelse er inkompatible på samme bord. Brug den ene eller den anden.
- For bedste resultater vælg 1 til 4 kolonner, der ofte optræder i
WHEREklausuler.
Sammenlign Z-ordens- og væskeklyngedannelse
| Aspekt | Z-orden | Væske-klustring |
|---|---|---|
| Kolonneændringer | Skal respecificere på hver OPTIMIZE |
ALTER TABLE CLUSTER BY Definitionen består |
| Inkrementel tilstand | Nej. Fuld omskrivning for hver gennemspilning | Ja (Runtime 2.0+) |
| Søjleopbevaring | Ikke bevaret i metadata | Gemt i tabelmetadata |
| Kurvealgoritme | Z-ordens kurve | Z-Order (én kolonne), Hilbert (2+ kolonner) |
| Køretidskrav | Alle kørselstider | Kørselstid 1.2+ (inkrementel i 2.0+) |