Que sont les vecteurs de suppression ?
Les vecteurs de suppression sont une fonctionnalité d’optimisation du stockage qui peut être activée 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 notées par les vecteurs de suppression à la version de table la plus récente.
Databricks recommande d’utiliser Databricks Runtime 14.3 LTS et les versions ultérieures pour écrire des tables avec des vecteurs de suppression afin de tirer parti de 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 ces mises à jour aient été produites par des E/S prédictives ou non. Consultez Utiliser des E/S prédictives pour accélérer les mises à jour.
Activer les vecteurs de suppression
Les vecteurs de suppression sont activés par défaut lors de la création d’une table à l’aide d’un entrepôt SQL ou Databricks Runtime 14.1 ou version ultérieure.
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.
Vous pouvez activer la prise en charge des vecteurs de suppression sur une table Delta en définissant une propriété de la table Delta Lake. Vous activez des vecteurs de suppression lors de la création d’une table ou modifiez une table existante, comme dans les exemples suivants :
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 les fichiers de données sont réécrits, à la suite d’un déclenchement de l’un des événements suivants :
- 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 au moment où elle se termine, soit l’horodatage que vous devez prendre en compte pour le seuil de rétention pour que votre opération VACUUM
supprime 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 tire profit des vecteurs de suppression pour actionner les E/S prédictives pour les mises à jour au niveau du calcul Photon. Consultez Utiliser des E/S prédictives pour accélérer les mises à jour.
La prise en charge de l’exploitation des vecteurs de suppression pour les lectures et les écritures varie selon le client.
Le tableau suivant indique les versions de client nécessaires pour lire et écrire des tables Delta avec les vecteurs de suppression activés et spécifie les opérations d’écriture qui tirent profit 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 3.1 ou ultérieur. |
Remarque
Pour bénéficier d’une prise en charge dans les 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 pouvez activer les vecteurs de suppression pour les vues matérialisées, mais pour désactiver les vecteurs de suppression pour une vue matérialisée, vous devez supprimer la vue matérialisée, puis la recréer.
- Vous ne pouvez pas générer un fichier manifeste pour une table avec des vecteurs de suppression présents. Pour générer un manifeste, exécutez
REORG TABLE ... APPLY (PURGE)
et vérifiez qu’aucune opération d’écriture simultanée n’est en cours d’exécution. - 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.