Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Z-Order è una tecnica di layout dei dati che coloca i dati correlati negli stessi file applicando una curva di riempimento dello spazio Z-Order (Morton) su una o più colonne. La tecnica restringe gli intervalli min/max archiviati nelle statistiche a livello di file, il che migliora l'esclusione dei file quando le query filtrano su tali colonne.
Tip
Per la maggior parte dei carichi di lavoro a partire da Fabric Runtime 2.0, liquid clustering è la strategia consigliata per il layout dei dati. Consente una selezione flessibile delle colonne, l'ottimizzazione incrementale e nessuna penalizzazione dovuta ai file di piccole dimensioni, anche con colonne ad alta cardinalità. Usare Z-Order solo quando si dispone di un flusso di lavoro stabilito in un runtime precedente o non è necessaria la flessibilità del clustering liquido.
Per indicazioni complete sul clustering liquido, vedere Clustering liquido.
Quando usare Z-Order
Usare l'ordine Z quando:
- Si usa Fabric Runtime 1.2 o versioni precedenti, in cui il clustering liquido non è disponibile o ha un supporto limitato.
- È stato stabilito un flusso di lavoro dell'ordine Z e non è necessario modificare frequentemente le colonne.
- Vuoi saltare file multicolonna senza introdurre il partizionamento.
Applica l'ordine Z
L'ordine Z viene applicato come parte del OPTIMIZE comando. A differenza del clustering liquido, si specificano le colonne direttamente nell'istruzione OPTIMIZE ogni volta che viene eseguita, ovvero le colonne non vengono archiviate nei metadati della tabella.
Tip
A partire da Fabric Runtime 2.0, il motore di esecuzione nativo supporta l'esecuzione di OPTIMIZE con ZORDER specificata, offrendo prestazioni di clustering multidimensionale superiori del 30-50%. I runtime precedenti ripiegano su un'esecuzione Spark regolare non accelerata.
Ambito Z-Order con un predicato WHERE
È possibile aggiungere una WHERE clausola per limitare i file OPTIMIZE ZORDER BY riscritti. Solo i file contenenti righe che corrispondono al predicato sono candidati per la compattazione e il layout dell'ordine Z. La clausola WHERE è utile per la manutenzione incrementale, ad esempio applicando lo Z-Ordering solo ai dati più recenti dopo un'esecuzione di acquisizione dei dati.
-- 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)
L'uso di un WHERE predicato riduce la quantità di dati riscritti, riducendo i costi di calcolo e il tempo di esecuzione. Il predicato filtra in base alle statistiche a livello di file, quindi funziona meglio sulle colonne che dispongono già di intervalli min/max stretti per ogni file (ad esempio, una colonna di data scritta in ordine cronologico).
Ordine Z con partizionamento
L'ordine Z e il partizionamento possono essere combinati. Quando vengono usati entrambi, OPTIMIZE ZORDER BY applica il layout Z-Order all'interno di ogni partizione in modo indipendente. La combinazione è utile quando è necessario il partizionamento per l'isolamento degli scrittori concorrenti e lo Z-Order per saltare i file in base ad altre colonne.
-- Table is partitioned by region; Z-Order by order_date within each partition
OPTIMIZE sales ZORDER BY (order_date)
Considerazioni principali
- Le colonne Z Order non vengono archiviate nei metadati della tabella. È necessario specificarli ogni volta che si esegue
OPTIMIZE. - Z-Order riscrive tutti i file idonei a ogni esecuzione di
OPTIMIZE, a meno che non si specifichi un predicatoWHEREper limitare il campo di applicazione. Non esiste alcuna modalità incrementale, ad esempio il clustering liquido. - L'ordine Z e il clustering liquido non sono compatibili nella stessa tabella. Usare uno o l'altro.
- Per ottenere risultati ottimali, scegliere da 1 a 4 colonne che vengono visualizzate di frequente nelle
WHEREclausole.
Confronta Z-Order e il clustering liquido
| Aspect | Ordine Z | Raggruppamento liquido |
|---|---|---|
| Modifiche alle colonne | Deve rispecificare su ogni OPTIMIZE |
ALTER TABLE CLUSTER BY mantiene la definizione |
| Modalità incrementale | No. Riscrittura completa a ogni esecuzione | Sì (Runtime 2.0+) |
| Archiviazione a colonne | Non persistente nei metadati | Archiviato nei metadati della tabella |
| Algoritmo delle curve | Curva dell'ordine Z | Z-Order (una colonna), Hilbert (2+ colonne) |
| Requisito di runtime | Tutti gli ambienti di runtime | Runtime 1.2+ (incrementale dalla 2.0 in poi) |