Använd variantsfragmentering för att optimera prestanda

Variantstrimning förbättrar frågeprestanda för VARIANT kolumner genom att lagra vanliga fält som separata kolumner i de underliggande Parquet-filerna. Fragmentering minskar det I/O som krävs för att läsa fält och förbättrar komprimering med hjälp av ett kolumnformat i stället för en binär blob.

Se VARIANT typ, Varianttypstöd för Apache Iceberg och Delta Lake och Frågevariantdata.

Requirements

Databricks Runtime 17.3 eller senare krävs för att läsa och skriva strimlade VARIANT-tabeller. Databricks rekommenderar Databricks Runtime 18.1 eller senare för optimala frågeprestanda med insamling av variantstatistik och datahopp.

Aktivera fragmentering

Från och med Databricks Runtime 17.3 aktiveras shredding automatiskt när du skapar en ny tabell med en eller flera kolumner av typen VARIANT med hjälp av CREATE TABLE.

CREATE OR REPLACE TABLE och ALTER TABLE aktivera inte automatiskt fragmentering. På så sätt undviker du att ändra beteendet för fragmentering av befintliga tabeller och arbetsbelastningar.

För befintliga tabeller kan du manuellt aktivera shredding genom att ställa in tabellegenskapen enableVariantShredding på TRUE och inaktivera det genom att ställa in egenskapen på FALSE:

Delta Lake

ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'true');

Isbergsbord

ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'true');

Kontrollera att fragmentering är aktiverat genom att kontrollera att tabellegenskapen enableVariantShredding är inställd på true.

Välj bort shredding för en viss tabell

Om du vill undanta en specifik tabell från fragmentering av framtida skrivningar anger du tabellegenskapen enableVariantShredding till FALSE:

Delta Lake

ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'false');

Isbergsbord

ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'false');

Ta bort fragmentering från en befintlig tabell

Om du vill ta bort fragmentering i en befintlig tabell släpper du funktionen med ALTER TABLE kommandot . Den här åtgärden skriver också om strimlade VARIANT data på plats till det ostrimlade VARIANT formatet och anger tabellegenskapen enableVariantShredding till false.

ALTER TABLE my_table DROP FEATURE "variantShredding";

Limitations

  • Fragmentering av data medför vissa omkostnader vid skrivningar.
  • Aktivering av fragmentering konverterar inte automatiskt befintliga VARIANT data i en tabell. Det gäller endast för data som skrivs när funktionen har aktiverats. Om du vill skriva om befintliga VARIANT data använder du REORG TABLE my_table APPLY (SHRED VARIANT).
  • Fragmentering gäller för kolumner eller fält på högsta nivå i structs, exklusive data som lagras i matriser eller kartor.