Partager via


Que sont les vecteurs de suppression ?

Les vecteurs de suppression sont une fonctionnalité d’optimisation du stockage que vous pouvez activer sur les tables Delta Lake. Par défaut, lorsqu’une seule ligne d’un fichier de données est supprimée, le fichier Parquet entier contenant l’enregistrement doit être réécrit. Avec les vecteurs de suppression activés pour la table, les opérations DELETE, UPDATE et MERGE utilisent des vecteurs de suppression pour marquer les lignes existantes comme supprimées ou modifiées sans réécrire le fichier Parquet. Les lectures suivantes sur la table résolvent l’état actuel de la table en appliquant les suppressions indiquées par les vecteurs de suppression à la version de table la plus récente.

Databricks recommande d’utiliser Databricks Runtime 14.3 LTS et versions ultérieures pour écrire des tables avec des vecteurs de suppression pour utiliser toutes les optimisations. Vous pouvez lire des tables avec des vecteurs de suppression activés dans Databricks Runtime 12.2 LTS et versions ultérieures.

Dans Azure Databricks Runtime 14.2 et versions ultérieures, les tables avec vecteurs de suppression prennent en charge la concurrence au niveau des lignes. Consultez Conflits d’écriture avec concurrence au niveau des lignes.

Remarque

Photon tire parti des vecteurs de suppression pour les mises à jour d’E/S prédictives, l’accélération DELETE, ainsi que les opérations MERGE et UPDATE. Tous les clients qui prennent en charge la lecture de vecteurs de suppression peuvent lire les mises à jour qui ont produit des vecteurs de suppression, que les E/S prédictives produisent ces mises à jour. Consultez Utiliser des E/S prédictives pour accélérer les mises à jour.

Activer les vecteurs de suppression

Important

Un paramètre d’administrateur de l’espace de travail permet de contrôler si les vecteurs de suppression sont activés automatiquement pour les nouvelles tables Delta. Consultez Activer automatiquement des vecteurs de suppression.

Si le paramètre d’espace de travail pour contrôler l’activation automatique des vecteurs de suppression est utilisé, en fonction de l’option sélectionnée pour les types de tables, les vecteurs de suppression sont activés par défaut lorsque vous créez une table à l’aide d’un entrepôt SQL ou d’un Databricks Runtime 14.1 ou version ultérieure. Les vecteurs de suppression ne sont pas activés par défaut lorsque vous créez des vues matérialisées ou des tables de streaming et doivent être activés manuellement lorsque vous créez une vue matérialisée ou une table streaming.

Pour activer manuellement la prise en charge des vecteurs de suppression sur une table ou une vue, utilisez la delta.enableDeletionVectors propriété table. Vous pouvez activer manuellement les vecteurs de suppression sur une table delta lorsque vous créez ou modifiez la table. Vous pouvez activer manuellement les vecteurs de suppression sur une vue matérialisée ou une table streaming uniquement lorsque vous créez la vue matérialisée ou la table Streaming. Vous ne pouvez pas utiliser une ALTER instruction pour activer les vecteurs de suppression sur une vue matérialisée ou une table streaming.

CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

Avertissement

Lorsque vous activez les vecteurs de suppression, le protocole de table est mis à niveau. Après la mise à niveau, la table ne sera pas lisible par les clients Delta Lake qui ne prennent pas en charge les vecteurs de suppression. Consultez Comment Azure Databricks gère-t-il la compatibilité des fonctionnalités Delta Lake ?.

Dans Databricks Runtime 14.1 et versions ultérieures, vous pouvez annuler la fonctionnalité de table des vecteurs de suppression pour activer la compatibilité avec d’autres clients Delta. Voir Annuler des fonctionnalités de table Delta.

Appliquer des modifications à des fichiers de données Parquet

Les vecteurs de suppression indiquent les modifications apportées aux lignes en tant que suppressions réversibles qui modifient logiquement les fichiers de données Parquet existants dans la table Delta Lake. Ces modifications sont appliquées physiquement lorsque l’un des événements suivants entraîne la réécriture des fichiers de données :

  • Une commande OPTIMIZE est exécutée sur la table.
  • Le compactage automatique déclenche une réécriture d’un fichier de données avec un vecteur de suppression.
  • REORG TABLE ... APPLY (PURGE) est exécuté sur la table.

Les événements liés au compactage de fichiers n’ont pas de garanties strictes pour la résolution des modifications enregistrées dans les vecteurs de suppression, et certaines modifications enregistrées dans les vecteurs de suppression peuvent ne pas être appliquées si les fichiers de données cibles ne sont pas candidats aux compactages de fichiers. REORG TABLE ... APPLY (PURGE) réécrit tous les fichiers de données contenant des enregistrements avec des modifications enregistrées à l’aide de vecteurs de suppression. Consultez REORG TABLE.

Remarque

Les données modifiées peuvent toujours exister dans les anciens fichiers. Vous pouvez exécuter VACUUM pour supprimer physiquement les anciens fichiers. REORG TABLE ... APPLY (PURGE) crée une nouvelle version de la table une fois terminée. Cette heure d’achèvement est l’horodatage que vous devez prendre en compte pour le seuil de rétention de votre VACUUM opération pour supprimer entièrement les fichiers supprimés. Consultez Supprimer les fichiers de données inutilisés avec le nettoyage.

Compatibilité avec les clients Delta

Azure Databricks utilise des vecteurs de suppression pour alimenter les E/S prédictives pour les mises à jour sur le calcul Photon. Consultez Utiliser des E/S prédictives pour accélérer les mises à jour.

La prise en charge de l’utilisation de vecteurs de suppression pour les lectures et les écritures varie selon le client.

Le tableau suivant indique les versions clientes requises pour lire et écrire des tables Delta avec des vecteurs de suppression activés et spécifie les opérations d’écriture qui utilisent des vecteurs de suppression :

Client Vecteurs de suppression d’écriture Vecteurs de suppression de lecture
Databricks Runtime avec Photon Prend en charge MERGE, UPDATE et DELETE en utilisant Databricks Runtime 12.2 LTS et versions ultérieures. Nécessite Databricks Runtime 12.2 LTS ou version ultérieure.
Databricks Runtime sans Photon Prend en charge DELETE en utilisant Databricks Runtime 12.2 LTS et versions ultérieures. Prend en charge UPDATE en utilisant Databricks Runtime 14.1 et versions supérieures. Prend en charge MERGE en utilisant Databricks Runtime 14.3 LTS et des versions ultérieures. Nécessite Databricks Runtime 12.2 LTS ou version ultérieure.
OSS Apache Spark avec OSS Delta Lake Prend en charge DELETE en utilisant OSS Delta 2.4.0 et versions supérieures. Prend en charge UPDATE en utilisant OSS Delta 3.0.0 et versions supérieures. Nécessite OSS Delta 2.3.0 ou version supérieure.
Destinataires Delta Sharing Les écritures ne sont pas prises en charge sur les tables Delta Sharing Databricks : nécessite DBR 14.1 ou ultérieur. Apache Spark open source : nécessite delta-sharing-spark la version 3.1 ou ultérieure.

Remarque

Pour obtenir de la prise en charge avec d’autres clients Delta, consultez la documentation sur les intégrations OSS Delta Lake.

Limites

  • UniForm ne prend pas en charge les vecteurs de suppression.
  • Vous ne pouvez pas utiliser une instruction GENERATE pour générer un fichier manifeste pour une table qui contient des fichiers à l’aide de vecteurs de suppression. Pour générer un manifeste, exécutez d’abord une TABLE REORG ... Instruction APPLY (PURGE), puis exécutez l’instruction GENERATE . Vous devez vous assurer qu’aucune opération d’écriture simultanée n’est en cours d’exécution lorsque vous envoyez l’instruction REORG .
  • Vous ne pouvez pas générer de fichiers manifeste de manière incrémentielle pour une table avec des vecteurs de suppression activés (par exemple, en définissant la propriété delta.compatibility.symlinkFormatManifest.enabled=truede table).
  • Si vous activez les vecteurs de suppression sur une vue matérialisée ou une table streaming et désactivez par la suite les vecteurs de suppression, les écritures futures dans la vue ou la table ne peuvent pas utiliser de vecteurs de suppression, mais les vecteurs de suppression existants ne sont pas supprimés.
  • Vous ne pouvez pas rétrograder le protocole de table après avoir activé les vecteurs de suppression sur une vue matérialisée ou une table streaming. Après l’activation, la fonctionnalité de table pour les vecteurs de suppression ne peut pas être supprimée, même si vous désactivez par la suite les vecteurs de suppression sur la vue ou la table.
  • Vous ne pouvez pas exécuter REORG sur des vues matérialisées ou des tables streaming pour valider les modifications enregistrées dans les vecteurs de suppression dans les fichiers de données Parquet qui sauvegardent ces objets. En raison de cette limitation, n’activez pas les vecteurs de suppression sur des vues matérialisées ou des tables streaming si vous devez garantir la suppression complète des enregistrements (par exemple, pour la conformité RGPD ou CCPA).