VACUUM

S’applique à : case marquée oui Databricks SQL case marquée oui 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]

Important

La fenêtre de rétention de la commande VACUUM est déterminée par la delta.deletedFileRetentionDuration propriété de table, 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. Si vous souhaitez conserver des données plus longtemps (par exemple, pour prendre en charge les déplacements de temps pendant des durées plus longues), vous devez définir 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

  • table_name

    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

  • table_name

    Identifie une table existante par son nom ou son chemin d’accès.

  • RETAIN num HOURS

    Le seuil de conservation.