Aller au contenu principal

Optimiser le Layout des fichiers de données

La commande OPTIMIZE réécrit les fichiers de données pour améliorer le Layout des données pour les tables Delta Lake et Apache Iceberg. Pour les tables avec clustering liquide activé, OPTIMIZE réécrit les fichiers de données pour grouper les données par clés de clustering liquide. Pour les tables avec des partitions définies, le compactage des fichiers et le Layout des données sont effectués au sein des partitions.

L'optimisation prédictive exécute automatiquement OPTIMIZE sur les tables gérées par Unity Catalog. Databricks recommande d'activer l'optimisation prédictive pour toutes les tables gérées par Unity Catalog afin de simplifier la maintenance des données et de réduire les coûts de stockage. Voir Optimisation prédictive pour les tables gérées par Unity Catalog.

Les tables Delta Lake sans clustering liquide peuvent inclure facultativement une clause ZORDER BY pour améliorer le clustering des données lors de la réécriture. Les tables Apache Iceberg utilisent des stratégies de clustering et de tri au lieu de ZORDER. Databricks recommande d'utiliser le clustering liquide au lieu des partitions, ZORDER, ou d'autres approches de layout de données.

See OPTIMIZE.

important

Dans Databricks Runtime 16,0 et versions ultérieures, vous pouvez utiliser OPTIMIZE FULL pour forcer le reclustering des tables avec le clustering liquide activé. Voir Forcer le reclustering.

Exemples de syntaxe

Trigger la compaction en exécutant la commande OPTIMIZE :

SQL
OPTIMIZE table_name

Si vous avez une grande quantité de données et que vous souhaitez n'en optimiser qu'un sous-ensemble, spécifiez un prédicat de partition facultatif à l'aide de WHERE:

SQL
OPTIMIZE table_name WHERE date >= '2022-11-18'

Considérez les informations suivantes pour le bin-packing :

  • L'optimisation du bin packing est *idempotente*, ce qui signifie que si elle est exécutée deux fois sur le même dataset, la seconde exécution n'a aucun effet.
  • L'équilibrage de fichiers vise à produire des fichiers de données équilibrés en termes de taille de stockage, mais pas nécessairement par le nombre de tuples par fichier. Cependant, les deux mesures sont souvent corrélées.

Les lecteurs de tables Delta Lake utilisent l'isolation des snapshots, ce qui signifie qu'ils ne sont pas interrompus lorsque OPTIMIZE supprime les fichiers inutiles du journal des transactions. Puisque OPTIMIZE n'apporte aucune modification aux données de la table, une lecture avant et après un OPTIMIZE donne les mêmes résultats. L'exécution de OPTIMIZE sur une table qui est une source de streaming n'affecte aucun Stream actuel ou futur avec cette table comme source.

OPTIMIZE Retourne les statistiques de fichier (min, max, total, etc.) pour les fichiers supprimés et les fichiers ajoutés par l'opération. Les statistiques d'optimisation contiennent également les statistiques Z-Ordering, le nombre de lots et les partitions optimisées.

Vous pouvez également compacter automatiquement les petits fichiers à l’aide du compactage automatique. Voir Compactage automatique.

Fréquence d'exécution recommandée OPTIMIZE

Activez l'optimisation prédictive pour les tables gérées par Unity Catalog afin de vous assurer que OPTIMIZE s'exécute automatiquement lorsque cela est rentable.

Lorsque vous choisissez la fréquence d'exécution de OPTIMIZE, il y a un compromis entre performance et coût. Pour une meilleure performance des queries pour l'utilisateur final, exécutez OPTIMIZE plus souvent. Cela entraînera un coût plus élevé en raison de l'utilisation accrue des ressources. Pour optimiser les coûts, exécutez-le moins souvent.

Databricks vous recommande de start par exécuter OPTIMIZE quotidiennement, de préférence la nuit lorsque les prix spot sont bas, puis d'ajuster la fréquence pour équilibrer les compromis entre coût et performances.

Types d'instances recommandés pour OPTIMIZE

Les deux Opérations sont des Opérations gourmandes en CPU, effectuant de grandes quantités de décodage et d'encodage Parquet.

Databricks recommande les types d'instances Compute optimized . OPTIMIZE bénéficie également de SSD attachés.