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 { { FULL | LITE } | RETAIN num HOURS | DRY RUN } [...]
Dans Databricks Runtime 16.0 et versions antérieures RETAIN num HOURS
doivent précéder DRY RUN
dans la syntaxe.
Important
La fenêtre de rétention de la commande VACUUM
est déterminée par la propriété de table delta.deletedFileRetentionDuration
, qui est définie par défaut sur 7 jours.
Cela signifie que VACUUM
supprime les fichiers de données qui ne sont plus référencés par une version de table Delta au cours des 7 derniers jours.
Pour conserver les données pendant une période plus longue, par exemple pour prendre en charge les déplacements de temps pendant des durées plus longues, définissez cette propriété de table sur une valeur plus élevée.
L’exemple suivant montre comment définir ce seuil sur 30 jours :
ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');
Paramètres
-
Identifie une table Delta existante. Le nom ne doit pas inclure de spécification temporelle ou de spécification d’options.
RETAIN num HOURS
Le seuil de conservation.
DRY RUN
Retourne la liste des fichiers (1 000 au maximum) à supprimer.
FULL
ouLITE
S’applique à :
Databricks SQL
Databricks Runtime 16.1 et versions ultérieures
FULL
exécute l’opération vacuum en mode Full. Cela supprime les fichiers de données en dehors de la durée de rétention et tous les fichiers du répertoire de table non référencés par la table.LITE
exécute l’opération de vide en mode Lite. Au lieu de rechercher tous les fichiers dans le répertoire de table,VACUUM
utilise le journal des transactions Delta pour identifier et supprimer les fichiers qui ne sont plus référencés par les versions de table pendant la durée de rétention. Si l’opérationVACUUM LITE
ne peut pas être terminée en raison de la suppression du journal Delta, une exception DELTA_CANNOT_VACUUM_LITE est levée.Par défaut, il s’agit de
FULL
.
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.