Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les vecteurs de suppression sont une fonctionnalité d’optimisation du stockage qui accélère les modifications apportées aux tables. Par défaut, la suppression d’une seule ligne nécessite la réécriture du fichier Parquet entier contenant cet enregistrement. Les vecteurs de suppression évitent cette surcharge. Lorsque les vecteurs de suppression sont activés, les opérations DELETE, UPDATE, et MERGE marquent les lignes comme modifiées sans réécrire le fichier Parquet. Lit ensuite l’état actuel de la table en appliquant les modifications enregistrées dans les vecteurs de suppression.
Databricks recommande d'utiliser Databricks Runtime 14.3 LTS et supérieur pour écrire des tables avec des vecteurs de suppression afin d'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 des vecteurs de suppression peuvent lire les mises à jour qui ont produit des vecteurs de suppression, que les E/S prédictives aient produit ces mises à jour ou non. 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 d’espace de travail contrôle si les vecteurs de suppression sont activés automatiquement pour les nouvelles tables. 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é, alors, en fonction de l'option sélectionnée pour les types de table, les vecteurs de suppression sont activés par défaut lorsque vous créez une nouvelle table à l'aide d'un entrepôt SQL ou de Databricks Runtime 14.1 ou supérieur.
Remarque
Les vecteurs de suppression ne sont pas activés par défaut pour les vues matérialisées et les tables de diffusion en continu stockées dans le metastore Hive.
Pour activer ou désactiver manuellement la prise en charge des vecteurs de suppression sur n’importe quelle table ou vue (y compris les tables de diffusion en continu et les vues matérialisées), utilisez la enableDeletionVectors propriété table. Choisissez manuellement si vous souhaitez activer les vecteurs de suppression sur une table lorsque vous créez ou modifiez la table, comme dans l’exemple suivant. Vous ne pouvez pas utiliser d’instruction ALTER pour activer ou désactiver les vecteurs de suppression sur une vue matérialisée ou une table streaming.
-- For Delta tables
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
-- For Iceberg tables, use iceberg.enableDeletionVectors instead of delta.enableDeletionVectors
Avertissement
Lorsque vous activez les vecteurs de suppression, le protocole de table est mis à niveau. Après la mise à niveau, la table n’est pas lisible par les clients qui ne prennent pas en charge les vecteurs de suppression. Voir la compatibilité des fonctionnalités et les protocoles de Delta Lake.
Dans Databricks Runtime 14.1 et versions ultérieures, vous pouvez supprimer la fonctionnalité de table de vecteurs de suppression pour permettre la compatibilité avec d’autres clients. Consultez Supprimer une fonctionnalité de table Delta Lake et passer à une version antérieure du protocole de table.
Appliquer les modifications aux 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. 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
OPTIMIZEest 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. Voir 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 du tableau lorsqu'il est terminé. Ce délai d'exécution est l'horodatage que vous devez prendre en compte pour le seuil de rétention de votre opération VACUUM afin de supprimer complètement les fichiers supprimés. Consultez Supprimer les fichiers de données inutilisés avec le nettoyage.
Compatibilité du client
Azure Databricks utilise des vecteurs de suppression pour alimenter les E/S prédictives pour les mises à jour sur le calcul compatible 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 la lecture et l’écriture de tables 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 de partage Delta. | Databricks : nécessite Databricks Runtime 14.1 ou version ultérieure. Apache Spark open source : nécessite la version delta-sharing-spark 3.1 ou supérieure. |
Remarque
Pour obtenir de l'assistance pour les autres clients, consultez la documentation des intégrations OSS Delta Lake.
Limites
- UniForm Iceberg v2 ne prend pas en charge les vecteurs de suppression. Apache Iceberg v3 prend en charge les vecteurs de suppression sur les tables avec UniForm activé. Consultez Utiliser les fonctionnalités Apache Iceberg v3.
- Vous ne pouvez pas utiliser une instruction GENERATE pour générer un fichier manifeste pour une table contenant des fichiers utilisant des vecteurs de suppression. Pour générer un manifeste, exécutez d’abord une instruction REORG TABLE … 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 soumettez l'instructionREORG. - Vous ne pouvez pas générer de manière incrémentielle des fichiers manifestes pour une table avec des vecteurs de suppression activés (par exemple, en définissant la propriété de table
delta.compatibility.symlinkFormatManifest.enabled=true). - Si vous activez les vecteurs de suppression sur une vue matérialisée ou une table de streaming, puis désactivez les vecteurs de suppression, les écritures futures dans la vue ou la table ne peuvent pas utiliser les 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 de streaming. Après l'activation, la fonctionnalité de tableau pour les vecteurs de suppression ne peut pas être supprimée, même si vous désactivez ultérieurement les vecteurs de suppression sur la vue ou le tableau.