Aller au contenu principal

Utiliser le découpage de variante pour optimiser les performances

Le déchiquetage de variantes améliore les performances des query sur les colonnes VARIANT en stockant les champs couramment rencontrés comme des colonnes distinctes dans les fichiers Parquet sous-jacents. Le découpage réduit les E/S nécessaires pour lire les champs et améliore la compression en utilisant un format de colonne au lieu d'un blob binaire.

Voir le VARIANT type, la prise en charge du type Variant pour Apache Iceberg et Delta Lake, et l’ interrogation des données Variant.

Exigences

Databricks Runtime 17,3 ou version ultérieure est requis pour lire et écrire des tables VARIANT déchiquetées. Pour des performances de query optimales avec la collecte de statistiques de variantes et le saut de données, Databricks recommande Databricks Runtime 18,1 ou version ultérieure.

Activer le déchiquetage

À partir de Databricks Runtime 17.3, le déchiquetage est automatiquement activé lorsque vous créez une nouvelle table avec une ou plusieurs colonnes VARIANT à l'aide de CREATE TABLE.

CREATE OR REPLACE TABLE et ALTER TABLE n'activent pas automatiquement le déchiquetage. Cela évite de modifier le comportement de déchiquetage des tables et des charges de travail existantes.

Pour les tables existantes, vous pouvez activer manuellement le déchiquetage en définissant la propriété de table enableVariantShredding sur TRUE et le désactiver en définissant la propriété sur FALSE:

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

Vérifiez que le fractionnement est activé en vérifiant que la propriété de table enableVariantShredding est définie sur true.

Se désinscrire du déchiquetage pour une table spécifique

Pour exclure une table spécifique du déchiquetage lors des écritures futures, définissez la propriété de table enableVariantShredding sur FALSE:

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

Supprimer le déchiquetage d'une table existante

Pour supprimer le déchiquetage sur une table existante, supprimez la fonctionnalité avec la commande ALTER TABLE. Cette opération réécrit également les données fragmentées VARIANT en place vers le format non fragmenté VARIANT et définit la propriété de table enableVariantShredding sur faux.

SQL
ALTER TABLE my_table DROP FEATURE "variantShredding";

Limitations

  • Le déchiquetage des données introduit un certain surcoût sur les écritures.
  • L'activation du déchiquetage ne convertit pas automatiquement les données VARIANT existantes dans une table. Cela s'applique uniquement aux données écrites après l'activation de la fonctionnalité. Pour réécrire les données VARIANT existantes, utilisez REORG TABLE my_table APPLY (SHRED VARIANT).
  • Le déchiquetage s'applique aux colonnes de niveau supérieur VARIANT ou aux champs VARIANT dans les structures, à l'exclusion des données VARIANT stockées dans des tableaux ou des mappages.