Optimiser les performances de Looker

Ces bonnes pratiques reflètent les recommandations partagées par une équipe pluridisciplinaire de spécialistes Looker expérimentés. Ces insights sont le fruit d'années d'expérience avec les clients Looker, de l'implémentation à la réussite à long terme. Bien que ces pratiques soient adaptées à la plupart des utilisateurs et des situations, faites appel à votre bon sens lors de leur implémentation.

Optimiser les performances des requêtes

Pour vous assurer que les requêtes sont créées et exécutées de manière optimale par rapport à votre base de données, suivez les conseils suivants sur l'interface et le backend:

  • Dans la mesure du possible, créez des explorations à l'aide de jointures many_to_one. En général, vous obtiendrez les meilleures performances de requête si vous combinez des vues du niveau le plus précis au plus haut niveau de détail (many_to_one).
  • Optimisez la mise en cache afin de la synchroniser avec vos règles ETL dans la mesure du possible afin de réduire le trafic des requêtes de base de données. Par défaut, Looker met en cache les requêtes pendant une heure. Vous pouvez contrôler la règle de mise en cache et synchroniser l'actualisation des données Looker avec votre processus ETL en appliquant des groupes de données dans des explorations, à l'aide du paramètre persist_with. Cela permet à Looker de s'intégrer plus étroitement au pipeline de données du backend, de sorte que l'utilisation du cache peut être maximisée sans risque d'analyser des données obsolètes. Les règles de mise en cache nommées peuvent être appliquées à l'ensemble d'un modèle et/ou à des explorations individuelles et à des tables dérivées persistantes (PDT).
  • Utilisez la fonctionnalité de reconnaissance d'agrégation de Looker pour créer des cumuls ou des tableaux récapitulatifs que Looker peut utiliser pour les requêtes lorsque cela est possible, en particulier pour les requêtes courantes de bases de données volumineuses. Vous pouvez également exploiter la reconnaissance d'agrégats pour améliorer considérablement les performances de tableaux de bord entiers. Pour en savoir plus, consultez le tutoriel sur la reconnaissance d'agrégat.
  • Utilisez des PDT pour accélérer les requêtes. Convertissez les explorations avec de nombreuses jointures complexes ou non performantes, ou des dimensions avec des sous-requêtes ou des sous-sélections, en PDT afin que les vues soient préjointes et prêtes avant l'exécution.
  • Si votre dialecte de base de données prend en charge les augmentations de tables PDT, configurez des PDT incrémentielles pour réduire le temps que Looker passe à régénérer les tables PDT.
  • Évitez de joindre des vues dans des explorations au moyen de clés primaires concaténées définies dans Looker. À la place, effectuez une jointure sur les champs de base qui constituent la clé primaire concaténée à partir de la vue. Vous pouvez également recréer la vue sous forme de PDT avec la clé primaire concaténée prédéfinie dans la définition SQL de la table, plutôt que dans le code LookML d'une vue.
  • Utilisez l'outil Expliquer dans l'exécuteur SQL pour effectuer une analyse comparative. EXPLAIN affiche un aperçu du plan d'exécution des requêtes de votre base de données pour une requête SQL donnée, ce qui vous permet de détecter les composants de requête pouvant être optimisés. Pour en savoir plus, consultez le post destiné à la communauté Comment optimiser SQL avec EXPLAIN.
  • Déclarez les index. Vous pouvez consulter les index de chaque table directement dans Looker à partir de l'exécuteur SQL en cliquant sur l'icône en forme de roue dentée d'une table, puis en sélectionnant Afficher les index.

    Les colonnes les plus courantes qui peuvent bénéficier des index sont les dates importantes et les clés étrangères. L'ajout d'index à ces colonnes permet d'améliorer les performances de presque toutes les requêtes. Cela s'applique également aux PDT. Les paramètres LookML, tels que indexes, sort keys et distribution, peuvent être appliqués de manière appropriée.
  • Augmentez la mémoire, les cœurs et les E/S (entrées/sorties) des bases de données avec du matériel insuffisant ou des ressources provisionnées nécessaires (comme AWS) pour traiter des ensembles de données volumineux, afin d'améliorer les performances des requêtes.

Optimiser les performances du serveur Looker

Vous pouvez également prendre des mesures pour vous assurer que le serveur et l'application Looker fonctionnent de manière optimale:

  • Limitez le nombre d'éléments dans un tableau de bord individuel. Il n'existe aucune règle précise pour définir ce nombre, car la conception de chaque élément a une incidence sur la consommation de mémoire en fonction de divers facteurs. Toutefois, les tableaux de bord comportant 25 vignettes ou plus ont tendance à poser problème en termes de performances.
  • Utilisez la fonctionnalité d'actualisation automatique du tableau de bord de manière stratégique. Si un tableau de bord utilise l'actualisation automatique, veillez à ce qu'elle ne s'actualise pas plus rapidement que les processus ETL exécutés en arrière-plan.
  • Utilisez les tableaux croisés dynamiques de manière stratégique, et évitez de trop en utiliser dans les vignettes et les Looks du tableau de bord. Les requêtes comportant des dimensions croisées utilisent plus de mémoire. Plus il y a de dimensions croisées dynamiquement, plus la quantité de mémoire utilisée lors du chargement du contenu (exploration, présentation ou tableau de bord) est importante.
  • Utilisez avec parcimonie les fonctionnalités de traitement post-requête, telles que les résultats de fusion, les champs personnalisés et les calculs de table. Ces fonctionnalités sont destinées à être utilisées comme démonstrations de faisabilité pour vous aider à concevoir votre modèle. Il est recommandé de coder en dur les calculs et les fonctions fréquemment utilisés dans LookML pour générer du code SQL à traiter dans votre base de données. Des calculs excessifs peuvent entrer en concurrence pour la mémoire Java sur l'instance Looker, ce qui ralentit la réponse de cette dernière.
  • Limitez le nombre de vues incluses dans un modèle lorsqu'un grand nombre de fichiers de vue sont présents. L'inclusion de toutes les vues dans un même modèle peut ralentir les performances. Lorsqu'un projet contient un grand nombre de vues, envisagez de n'inclure que les fichiers de vue nécessaires dans chaque modèle. Pensez à utiliser des conventions d'attribution de noms stratégiques pour les noms de fichiers de vues, afin de faciliter l'inclusion de groupes de vues dans un modèle. Vous trouverez un exemple dans la documentation du paramètre includes.
  • Évitez de renvoyer un grand nombre de points de données par défaut dans les vignettes et les Looks de tableau de bord. Les requêtes qui renvoient des milliers de points de données consomment plus de mémoire. Assurez-vous que les données sont limitées dans la mesure du possible en appliquant des filtres d'interface aux tableaux de bord, aux Looks et aux explorations, ainsi qu'au niveau LookML avec les paramètres required filters, conditionally_filter et sql_always_where.
  • Téléchargez ou diffusez des requêtes avec l'option Tous les résultats avec parcimonie, car certaines requêtes peuvent être très volumineuses et submerger le serveur Looker lors de leur traitement.

Pour obtenir de l'aide afin d'identifier la source des problèmes de performances, consultez la page des bonnes pratiques Vue d'ensemble des performances.