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.
Utilisez la commande Delta Lake VACUUM pour supprimer définitivement les fichiers de données qui ne sont plus référencés par une table Delta et qui sont plus anciens que votre seuil de rétention.
Dans Fabric, VACUUM cela vous aide à nettoyer les fichiers obsolètes dans OneLake après les mises à jour, suppressions, fusions et opérations de compactage. Elle réduit la consommation de stockage, supprime les fichiers obsolètes dont Fabric n’a plus besoin pour l’état actif de la table, et libère de l’espace après des opérations de maintenance telles que OPTIMIZE.
VACUUM repose sur les mêmes concepts fondamentaux de Delta Lake que ceux que vous connaissez peut-être dans la version open source de Delta Lake, mais vous l’utilisez dans les expériences Spark de Fabric, telles que les notebooks, les définitions de tâches Spark et l’interface utilisateur Maintenance du Lakehouse.
Qu’est-ce que VACUUM supprime ?
Une table Delta effectue le suivi des fichiers qui composent l’état actuel de la table dans le journal Delta. Lorsque des opérations telles que UPDATE, DELETE, MERGE, les écritures avec écrasement ou la compaction remplacent des fichiers Parquet plus anciens par des fichiers plus récents, les anciens fichiers peuvent ne plus être référencés.
VACUUM supprime ces fichiers non référencés uniquement lorsque ces deux conditions sont remplies :
- Les fichiers ne sont plus référencés par le journal Delta.
- Les fichiers sont plus anciens que le seuil de rétention configuré.
Étant donné que VACUUM supprime définitivement les fichiers de OneLake, utilisez-le soigneusement lorsque vous avez toujours besoin d’anciennes versions de table.
Pourquoi VACUUM importe
Exécutez VACUUM quand vous souhaitez :
- Réduire le coût de stockage en supprimant les fichiers obsolètes de OneLake
- Récupérer de l’espace après les mises à jour, les suppressions et les opérations de fusion
- Nettoyer les fichiers de pré-compactage après que
OPTIMIZEa créé des fichiers de remplacement - Empêcher les tables de production à long terme d’accumuler des fichiers de données obsolètes inutiles
VACUUM n’améliore pas les performances des requêtes par elle-même de la même façon que les optimisations de compactage ou de disposition de fichier. Son objectif principal est le nettoyage du stockage.
Où lancer VACUUM
VACUUM est une commande Spark dans Fabric. Exécutez-le à des endroits qui utilisent le moteur Spark, par exemple :
- Notebooks Fabric
- Définitions des tâches Spark
- L’interface utilisateur de maintenance de Lakehouse et les flux de travail de maintenance basés sur des pipelines
Ne l’utilisez VACUUM pas dans le terminau SQL Analytics ni dans l’éditeur SQL de l’entrepôt. Ces environnements ne prennent pas en charge les commandes de maintenance Delta Spark.
Si vous souhaitez un flux de travail basé sur le portail, consultez la maintenance des tables Lakehouse.
Note
Dans les notebooks, exécutez des exemples SQL dans une cellule Spark SQL, des exemples Python dans une cellule PySpark et des exemples Scala dans une cellule Scala.
Exemples de syntaxe
Utilisez les exemples suivants lorsque vous exécutez VACUUM dans Fabric.
Effectuer un VACUUM sur une table avec la rétention par défaut
Vacuum d’une table avec un seuil de rétention personnalisé
Afficher un aperçu des fichiers avec DRY RUN
Permet DRY RUN de répertorier les fichiers qui seraient supprimés sans les supprimer réellement.
VACUUM schema_name.table_name DRY RUN
Vous pouvez également combiner RETAIN et DRY RUN.
VACUUM schema_name.table_name RETAIN 168 HOURS DRY RUN
Aspiration en mode LITE
VACUUM LITE est une alternative plus rapide qui utilise uniquement le journal des transactions Delta pour identifier les fichiers non référencés, plutôt que de répertorier chaque fichier dans le répertoire de table. Cette approche est beaucoup plus rapide pour les tables volumineuses avec de nombreux fichiers.
VACUUM schema_name.table_name LITE
VACUUM schema_name.table_name LITE RETAIN 168 HOURS
VACUUM LITE identifie les fichiers à supprimer en lisant le journal Delta plutôt que d’effectuer une liste complète de répertoires. Cette méthode est plus rapide, mais elle nécessite de disposer d’un historique suffisant des journaux pour déterminer les fichiers non référencés. Si le journal Delta a été tronqué au-delà de ce que nécessite le mode LITE, une exception DELTA_CANNOT_VACUUM_LITE est levée — dans ce cas, revenez au VACUUM standard (mode complet).
Note
VACUUM LITE est pris en charge dans Fabric runtime Spark 2.0 (Delta 4.1) ou version ultérieure. Vérifiez que votre version du runtime Fabric prend en charge cette fonctionnalité.
VACUUM avec une table d’inventaire
Pour les tables très volumineuses où même la liste de répertoires complets par défaut VACUUM est lente, vous pouvez fournir un inventaire précomputé des fichiers. Au lieu de répertorier le répertoire de table au moment de l’exécution, VACUUM lit les chemins de fichier à partir de l’inventaire que vous fournissez.
VACUUM schema_name.table_name USING INVENTORY inventory_table_name
VACUUM schema_name.table_name USING INVENTORY (SELECT * FROM inventory_table_name WHERE path LIKE 'abfss://%')
La table d’inventaire (ou requête) doit avoir le schéma suivant :
| Column | Catégorie | Description |
|---|---|---|
path |
string | URI de fichier entièrement qualifié. |
length |
entier | Taille du fichier en octets. |
isDir |
booléen | Indique si l’entrée est un répertoire. |
modificationTime |
entier | Heure de dernière modification du fichier en millisecondes depuis l’époque. |
Vous pouvez remplir une table d’inventaire à partir de métadonnées de fichier OneLake, de rapports d’inventaire de compte de stockage ou d’un travail Spark personnalisé qui répertorie le répertoire de table selon une planification. Cela dissocie l’étape de référencement de fichiers coûteuse de l’opération VACUUM elle-même.
Période de conservation par défaut
Si vous ne spécifiez pas d’intervalle de rétention, VACUUM utilise la durée de rétention par défaut de sept jours, soit 168 heures.
Cette valeur par défaut permet aux lecteurs actifs, aux enregistreurs et aux requêtes de voyage dans le temps une fenêtre plus sûre avant la suppression des fichiers plus anciens.
Contrôle de sécurité pour les périodes de rétention courtes
Delta Lake inclut un contrôle de sécurité de rétention contrôlé par spark.databricks.delta.retentionDurationCheck.enabled.
Si vous essayez d’utiliser une période de rétention inférieure à sept jours, ce contrôle de sécurité vous avertit, à moins que vous ne désactiviez explicitement ce contrôle dans votre configuration Spark.
Soyez prudent avant de désactiver cette protection. Une courte fenêtre de rétention peut supprimer des fichiers dont les charges de travail simultanées ou les scénarios de récupération ont toujours besoin.
Par exemple, ces commandes demandent une période de rétention d’un jour :
Si votre environnement conserve la vérification de la sécurité activée, le runtime vous avertit des paramètres de rétention inférieurs à sept jours.
Comprendre l’impact sur les déplacements temporels
Delta Lake Time Travel vous permet d’interroger les anciennes versions de table tant que les fichiers historiques requis existent toujours.
VACUUM supprime les fichiers antérieurs à la fenêtre de rétention, de sorte qu’ils suppriment également les fichiers de données nécessaires pour un voyage dans le temps au-delà de cette fenêtre. Une fois ces fichiers vides, vous ne pouvez plus interroger ces versions antérieures.
Avant de réduire la durée de conservation, déterminez le niveau d’accès à l’historique nécessaire à vos charges de travail, audits, opérations de débogage et processus de récupération. Pour plus d’informations, consultez Voyage dans le temps.
Comprendre l’impact sur les vecteurs de suppression
Les vecteurs de suppression peuvent marquer les lignes comme supprimées sans réécrire immédiatement chaque fichier de données affecté. En raison de ce comportement, les fichiers qui semblent anciens peuvent toujours faire partie de l’état de la table active.
VACUUM ne supprime pas les fichiers qui sont toujours référencés, y compris les fichiers qui restent valides, car les métadonnées de vecteur de suppression y pointent toujours. Si vous utilisez des vecteurs de suppression et réorganisez ou optimisez ultérieurement la table, d’autres fichiers obsolètes peuvent devenir éligibles VACUUM une fois ces modifications terminées.
Pour réécrire physiquement les données affectées par les vecteurs de suppression, consultez les tables DELTA REORG.
Suivez les bonnes pratiques
Utilisez ces pratiques lorsque vous exécutez VACUUM dans Fabric :
- Exécutez
VACUUMaprèsOPTIMIZEpour supprimer les fichiers de pré-compactage qui ne sont plus nécessaires. - Ne définissez pas la rétention en dessous de sept jours, sauf si vous comprenez clairement l’effet sur les déplacements temporels, les lecteurs, les écrivains et la récupération.
- Planifiez des opérations régulières
VACUUMdans des pipelines de production afin que les fichiers obsolètes ne s’accumulent pas dans OneLake. - Déterminez vos besoins en matière de remontée dans le temps avant de réduire la durée de rétention.
- Utilisez
DRY RUNd’abord lorsque vous souhaitez vérifier quels fichiers sont sur le point d’être supprimés.
Pour obtenir des conseils de maintenance à l’échelle de Fabric, consultez Vue d’ensemble de la maintenance des tables et Maintenance des tables Lakehouse.
Comprendre ce que VACUUM ne supprime pas
VACUUM supprime les fichiers de données obsolètes, mais ne supprime pas les fichiers journaux Delta dans le dossier _delta_log.
Le nettoyage des journaux Delta suit le comportement des points de contrôle et de la rétention des journaux, lesquels sont distincts de VACUUM.