VACUUM
S’applique à : Databricks SQL Databricks Runtime
Supprimez les fichiers inutilisés d’un répertoire de table.
Notes
Cette commande fonctionne différemment selon que vous utilisez une table Delta ou Apache Spark.
Nettoyer une table Delta
Nettoyez de manière récursive les répertoires associés à la table Delta. Pour obtenir plus d’informations et connaître les limitations, consultez Supprimer les fichiers de données inutilisés avec le nettoyage.
VACUUM
supprime tous les fichiers du répertoire de table qui ne sont pas gérés par Delta, ainsi que les fichiers de données qui ne sont plus dans l’état le plus récent du journal des transactions pour la table et qui sont antérieurs à un seuil de conservation. VACUUM
ignore tous les répertoires qui commencent par un trait de soulignement (_
), ce qui inclut le _delta_log
. Le partitionnement de votre table sur une colonne commençant par un trait de soulignement est une exception à cette règle ; VACUUM
analyse toutes les partitions valides incluses dans la table Delta cible. Les fichiers de données de table Delta sont supprimés en fonction de l’heure à laquelle ils ont été logiquement retirés du journal des transactions de Delta et des heures de conservation, et non d’après leur horodatage de modification sur le système de stockage. Le seuil par défaut est de 7 jours.
Sur les tables Delta, Azure Databricks ne déclenche pas automatiquement les opérations VACUUM
.
Si vous exécutez VACUUM
sur une table Delta, vous perdez la possibilité de remonter dans le temps jusqu’à une version antérieure à la période de conservation des données spécifiée.
Avertissement
Nous vous recommandons de définir un intervalle de rétention d’au moins sept jours, car les anciens instantanés et les fichiers non validés peuvent toujours être utilisés par des lecteurs ou des enregistreurs simultanés dans la table. Si VACUUM
nettoie les fichiers actifs, les lecteurs concurrents risquent d’échouer ou, pire, les tables peuvent être corrompues lorsque VACUUM
supprime des fichiers qui n'ont pas encore été validés. Vous devez choisir un intervalle qui plus long que la plus longue transaction simultanée en cours d’exécution et la période la plus longue pendant laquelle un flux peut dépasser la mise à jour la plus récente de la table.
Delta Lake effectue un contrôle de sécurité pour vous éviter d'exécuter une commande VACUUM
dangereuse. Dans Databricks Runtime, si vous êtes certain qu’aucune opération effectuée sur cette table ne prend plus de temps que l’intervalle de rétention que vous comptez spécifier, vous pouvez désactiver ce contrôle de sécurité en réglant la propriété de configuration Spark spark.databricks.delta.retentionDurationCheck.enabled
sur false
.
VACUUM table_name [RETAIN num HOURS] [DRY RUN]
Paramètres
-
Identifie une table Delta existante. Le nom ne doit pas inclure une spécification temporelle.
RETAIN num HOURS
Le seuil de conservation.
DRY RUN
Retourne la liste des fichiers (1 000 au maximum) à supprimer.
Nettoyer une table non Delta
Nettoie de manière récursive les répertoires associés à la table non Delta et supprime les fichiers non validés antérieurs à un seuil de rétention. Le seuil par défaut est de 7 jours.
Sur les tables non Delta, Azure Databricks déclenche automatiquement des opérations VACUUM
à mesure que des données sont écrites.
Syntaxe
VACUUM table_name [RETAIN num HOURS]
Paramètres
-
Identifie une table existante par son nom ou son chemin d’accès.
RETAIN num HOURS
Le seuil de conservation.