Comment la charge de travail affecte-t-elle les performances des tables dynamiques ?¶
L’optimisation de la charge de travail dans votre pipeline permet de réduire les coûts et d’améliorer les performances en général. Snowflake recommande de commencer votre optimisation en réglant votre charge de travail, car c’est le moyen le plus efficace d’améliorer les performances de vos actualisations de tables dynamiques.
Requêtes¶
Examinez de plus près les requêtes de vos tables dynamiques et cherchez des moyens de réduire leur charge de travail, par exemple :
Ajout de filtres pour réduire la quantité de données analysées.
Élimination des doublons plus en amont dans le pipeline pour éviter ainsi l’utilisation de
DISTINCT
.Réduction de l’utilisation de
NULL
et assurance de l’intégrité référentielle de vos données sources afin de remplacer les jointures externes par des jointures internes.Évitement de la matérialisation des grandes colonnes qui sont peu lues.
Localité¶
Tenez compte de la disposition de vos données dans vos tables. Pour de bonnes performances, les données auxquelles vos requêtes accèdent doivent être proches les unes des autres, ce que l’on appelle la localité.
Par exemple, si vous avez besoin de rechercher efficacement des lignes en fonction d’une colonne spécifique, la table doit être mise en cluster en fonction de cette colonne. Idéalement, la localité de vos tables devrait correspondre à la structure de vos requêtes, avec un clustering par les clés JOIN, GROUP BY, et PARTITION BY lorsque c’est possible. Pour bénéficier du clustering, la séquence des clés de clustering doit avoir un préfixe commun avec la séquence des clés de partitionnement.
L’optimisation de la localité implique des compromis. Il est difficile d’optimiser la localité sur plusieurs colonnes à la fois, alors concentrez-vous sur celles qui ont le plus d’impact pour obtenir les meilleures performances. Pour plus d’informations, voir Fonctionnement des structures de table dans Snowflake.