Surveiller les performances des requêtes à l'aide du suivi des requêtes d'exploration et du panneau "Performances"

L'outil de suivi des requêtes Explorer et le panneau Performances d'Explorer fournissent des données de performances détaillées pour une requête Explorer. Ces données peuvent vous aider à identifier les principaux points d'entrée pour résoudre les problèmes de performances liés aux requêtes et vous fournir des recommandations pour les améliorer.

Explorer le suivi des requêtes

Le suivi des requêtes Explore affiche la progression d'une requête Explore au cours des trois phases de la requête pendant son exécution.

Si une requête prend beaucoup de temps à s'exécuter, le suivi des requêtes peut indiquer la phase de la requête qui est à l'origine du problème de performances. Cela permet d'identifier les zones où des problèmes de performances peuvent survenir et où les efforts d'optimisation peuvent être les plus efficaces.

Le suivi des requêtes s'affiche lorsqu'une exploration est en cours d'exécution, à condition que le panneau Visualisation ou Données de l'exploration soit ouvert.

Explorer le panneau Performances

Pour afficher le panneau Performances d'Explorer, cliquez sur le lien Afficher les détails des performances, disponible pour toute requête Explorer exécutée.

Le panneau Performances indique le temps passé par la requête dans chacune des trois phases de la requête. Il inclut des liens vers la documentation sur les performances et le tableau de bord Historique des requêtes "Activité du système", qui affiche les données de performances actuelles et historiques pour la requête et l'exploration utilisées pour créer la requête.

Phases de la requête

Lorsqu'une exploration Looker exécute une requête de base de données, celle-ci est exécutée en trois phases :

Phase d'initialisation de la requête

Pendant la phase d'initialisation de la requête, Looker effectue toutes les tâches requises avant l'envoi de la requête à votre base de données. La phase d'initialisation de la requête comprend les tâches suivantes :

La page de documentation Comprendre les métriques sur les performances des requêtes explique comment utiliser l'exploration Métriques sur les performances des requêtes dans Activité du système pour afficher des informations détaillées sur une requête. La phase Initialisation de la requête du suivi des requêtes inclut les événements décrits dans les phases Worker asynchrone, Initialisation et Gestion des connexions de l'exploration Métriques sur les performances des requêtes.

Phase "Exécution de la requête"

La phase Exécution de la requête correspond au moment où Looker contacte et interroge votre base de données, puis renvoie les résultats de la requête. Les problèmes de performances pendant cette phase peuvent indiquer un problème avec la base de données externe, comme des PDT qui mettent longtemps à se reconstruire et qui peuvent nécessiter une optimisation, ou des tables de base de données externes qui peuvent nécessiter une optimisation. La phase Exécution de la requête comprend les tâches suivantes :

  • Créer les PDT nécessaires à la requête Explorer dans la base de données
  • Exécuter la requête demandée sur la base de données

La page de documentation Comprendre les métriques sur les performances des requêtes explique comment utiliser l'exploration Métriques sur les performances des requêtes dans Activité du système pour afficher des informations détaillées sur une requête. La phase Requête en cours d'exécution du suivi des requêtes inclut les événements décrits dans la phase Requêtes principales de l'explorateur Métriques sur les performances des requêtes.

Voici quelques mesures que vous pouvez prendre si vous rencontrez des problèmes de performances au cours de cette phase :

  • Créez des explorations à l'aide de jointures many_to_one dans la mesure du possible. Associer des vues du niveau le plus précis au niveau de détail le plus élevé (many_to_one) permet généralement d'obtenir les meilleures performances de requête.
  • Dans la mesure du possible, maximisez la mise en cache pour la synchronisation avec vos règles ETL afin de réduire le trafic de 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 stratégie de mise en cache et synchroniser l'actualisation des données Looker avec votre processus ETL en appliquant des groupes de données dans les explorations à l'aide du paramètre persist_with. En maximisant la mise en cache, Looker peut s'intégrer plus étroitement au flux d'alimentation de données backend. L'utilisation du cache peut ainsi ê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 à un modèle entier ou à des explorations et des tables dérivées persistantes (PDT) individuelles.
  • Utilisez la fonctionnalité Aggregate Awareness de Looker pour créer des tableaux récapitulatifs ou agrégés que Looker peut utiliser pour les requêtes chaque fois que possible, en particulier pour les requêtes courantes de grandes bases de données. Vous pouvez également utiliser 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 sensibilisation agrégée.
  • Utilisez des PDT pour accélérer les requêtes. Convertissez les explorations comportant de nombreuses jointures complexes ou peu 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 les augmentations de tables PDT pour réduire le temps que Looker consacre à la régénération des tables PDT.
  • Évitez d'associer des vues à des explorations sur des clés primaires concaténées définies dans Looker. À la place, effectuez une jointure sur les champs de base qui composent la clé primaire concaténée de la vue. Vous pouvez également recréer la vue en tant que PDT avec la clé primaire concaténée prédéfinie dans la définition SQL de la table, plutôt que dans le LookML d'une vue.
  • Utilisez l'outil "Expliquer dans l'exécuteur SQL" pour effectuer des benchmarks. EXPLAIN génère 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 qui peuvent être optimisés. Pour en savoir plus, consultez le post de la communauté Optimiser SQL avec EXPLAIN.
  • Déclarez les index. Vous pouvez consulter les index de chaque table directement dans Looker depuis SQL Runner en cliquant sur l'icône en forme de roue dentée dans une table, puis en sélectionnant Afficher les index.

    Les colonnes les plus courantes qui peuvent bénéficier d'index sont les dates importantes et les clés étrangères. L'ajout d'index à ces colonnes améliorera les performances de presque toutes les requêtes. Cela s'applique également aux tables PDT. Les paramètres LookML, tels que indexes, sort keys et distribution, peuvent être appliqués de manière appropriée.

Phase de traitement des résultats

Pendant la phase de traitement des résultats, Looker traite et affiche les résultats de la requête. La phase Traitement des résultats comprend les tâches suivantes :

La page de documentation Comprendre les métriques sur les performances des requêtes explique comment utiliser l'exploration Métriques sur les performances des requêtes dans Activité du système pour afficher des informations détaillées sur une requête. La phase Traitement des résultats du suivi des requêtes inclut les événements décrits dans la phase post-requête de l'exploration Métriques sur les performances des requêtes.

Voici quelques mesures que vous pouvez prendre si vous rencontrez des problèmes de performances pendant cette phase :

  • Utilisez les fonctionnalités telles que Fusionner les résultats, Champs personnalisés et Calculs de tableau avec parcimonie. Ces fonctionnalités sont destinées à être utilisées comme preuves de concept 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, ce qui générera 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 l'instance Looker.
  • Limitez le nombre de vues que vous incluez dans un modèle lorsque de nombreux fichiers de vues sont présents. Inclure toutes les vues dans un seul modèle peut ralentir les performances. Lorsqu'un projet contient un grand nombre de vues, envisagez d'inclure uniquement les fichiers de vue nécessaires dans chaque modèle. Envisagez d'utiliser des conventions de nommage stratégiques pour les noms de fichiers de vues afin d'inclure des groupes de vues dans un modèle. Un exemple est présenté dans la documentation du paramètre includes.
  • Évitez de renvoyer un grand nombre de points de données par défaut dans les tuiles de tableau de bord et les Looks. Les requêtes qui renvoient des milliers de points de données consomment plus de mémoire. Assurez-vous de limiter les données autant que possible en appliquant des filtres frontend aux tableaux de bord, aux Looks et aux explorations, et au niveau LookML avec les paramètres required filters, conditionally_filter et sql_always_where.
  • N'utilisez l'option Tous les résultats pour télécharger ou envoyer des requêtes que de manière ponctuelle, car certaines requêtes peuvent être très volumineuses et surcharger le serveur Looker lors de leur traitement.