Lagring og ytelse¶
Delta-tabeller i Databricks skriver som standard filene i ankomstrekkefølge, uten noen
eksplisitt gruppering av data. Tre strategier styrer hvordan data grupperes fysisk i
Parquet-filer på disk, og vedlikeholdsoperasjonene OPTIMIZE og VACUUM kan kjøres på to
måter.
Grupperingsstrategier¶
Tre strategier er tilgjengelige for å kontrollere hvordan data grupperes fysisk i Parquet-filer på disk.
| Strategi | Beskrivelse | Passer for |
|---|---|---|
| Liquid Clustering | Databricks-administrert strategi som automatisk omorganiserer data basert på angitte kolonner. Kan endres uten å skrive om tabellen. | Tabeller med varierende eller uforutsigbare spørringsmønstre. |
| Partisjonering | Data deles inn i fysisk separate kataloger basert på distinkte verdier i én kolonne. Krever full omskriving av tabellen for å endres. Se merknad nedenfor. | Tabeller med én kolonne med et begrenset antall distinkte verdier (i hundrevis) som konsekvent brukes i WHERE-setninger. Eksempel på egnede kolonner: Dato eller transaksjonstype. |
| Z-ordering | Co-lokaliserer relaterte data i de samme Parquet-filene slik at Databricks kan hoppe over irrelevante filer under spørringer basert på min/maks-statistikk. | Tabeller med høy lesefrekvens der spørringer filtrerer på bestemte kolonner. Eksempel på egnet kolonne: Bruker-ID. |
Vedlikeholdsoperasjoner¶
To tilnærminger finnes for å kjøre OPTIMIZE og VACUUM på Delta-tabeller.
Prediktiv optimalisering¶
En Databricks-funksjon som automatisk utløser OPTIMIZE og VACUUM basert på observerte bruksmønstre. Krever ingen eksplisitt planlegging eller manuell kjøring.
Eksplisitt OPTIMIZE og VACUUM¶
Manuelt planlagte vedlikeholdsoperasjoner:
OPTIMIZEkomprimerer små Parquet-filer til større filer for å redusere fragmentering og forbedre spørringsytelse.VACUUMsletter Parquet-filer som ikke lenger er referert til av Delta-loggen, og frigjør lagringsplass. Standard oppbevaringsperiode er 7 dager.
Begrensninger¶
- Partisjonering på kolonner med svært høy kardinalitet (mange distinkte verdier) kan gi dårligere ytelse enn ingen partisjonering.
- Z-ordering må angis eksplisitt ved hver
OPTIMIZE-kjøring for å opprettholdes. - Liquid Clustering krever Databricks Runtime 13.3 eller nyere.
Partisjonering kan ikke reverseres uten omskriving
En partisjonert tabell kan ikke ompartisjoneres eller avpartisjoneres uten full omskriving av tabellen.
Eksempel¶
CREATE TABLE my_table (
user_id BIGINT,
user_name STRING
) CLUSTER BY AUTO;
VACUUM my_table;
OPTIMIZE my_table;