Suivi de l’optimisation de la recherche à l’aide de Snowsight

Après avoir activé le service d’optimisation de la recherche, vous pouvez utiliser Snowsight pour surveiller les statistiques relatives à la manière dont les requêtes l’utilisent. Vous pouvez également utiliser Snowsight pour déterminer pourquoi une requête n’utilise pas le service d’optimisation de la recherche.

Suivi de l’utilisation de l’optimisation de la recherche pour une requête

Lorsqu’une requête utilise le service d’optimisation de la recherche, le profil de la requête comprend les éléments suivants :

  • Nœud Search Optimization Access : un nœud Search Optimization Access dédié figure dans le plan de requête. Sélectionnez ce nœud pour accéder aux informations sur le balayage des tables, ainsi qu’aux informations spécifiques à l’optimisation de la recherche.

  • Volet Attributes : ce volet pour le nœud contient les éléments suivants :

    • Nom complet de la table : identifie la table qui a été analysée pour la requête ayant utilisé l’optimisation de la recherche.

    • Informations sur l’utilisation de l’optimisation de la recherche : cette section liste les IDs d’expression que l’optimisation de la recherche a référencés pendant l’exécution de la requête. Chaque ID d’expression correspond à une méthode de recherche et à une cible de colonne définies pour la table. Exécutez la requête suivante pour afficher les IDs d’expression ainsi que les méthodes et cibles correspondantes :

      DESCRIBE SEARCH OPTIMIZATION ON <table_name>;
      
      Copy

      Pour plus d’informations sur cette commande, voir DESCRIBE SEARCH OPTIMIZATION.

  • Volet Statistics : ce volet pour le nœud contient les mesures suivantes :

    • Bytes scanned : quantité totale de données lues pendant l’exécution d’une opération de balayage de table.

    • Partitions scanned : nombre de micro-partitions réellement analysées.

    • Partitions total : nombre total de micro-partitions pour la table.

    • Partitions pruned by search optimization : nombre de micro-partitions que l’optimisation de la recherche a effectivement éliminées de l’analyse de la table correspondante.

L’image suivante montre un exemple de mesures dans le volet Statistics :

affiche le nœud d'accès à l'optimisation de la recherche avec les statistiques d'optimisation de la recherche incluses.

Déterminer la raison pour laquelle l’optimisation de la recherche n’a pas été utilisée

Même lorsque l’optimisation de la recherche est configurée pour une table, elle n’est pas toujours utilisée. Si l’optimisation de la recherche n’a pas été utilisée pour une requête, examinez la section Search Optimization Usage Info du nœud Table Scan dans le volet Attributes. La section affiche l’une des explications suivantes :

  • En cas de non-concordance des prédicats, le message suivant s’affiche :

    Search optimization service was not used because no
    match was found between used predicates and the
    search access paths added for the table.
    

    ce message indique que le prédicat utilisé dans la requête sur cette table n’est pas compatible avec les méthodes de recherche définies pour la table. Vous pouvez vérifier la configuration de l’optimisation pour la table en exécutant la commande suivante :

    DESCRIBE SEARCH OPTIMIZATION ON <table_name>;
    
    Copy

    Pour plus d’informations sur les prédicats et les types de données pris en charge par l’optimisation de la recherche, consultez le site Identifier les requêtes qui peuvent bénéficier de l’optimisation de la recherche.

  • Lorsque la décision de ne pas utiliser l’optimisation de la recherche est liée aux coûts, le message suivant s’affiche :

    The query optimizer estimated that the search optimization
    service would not be beneficial for this table scan.
    

    Ce message indique que les prédicats utilisés dans la requête sont compatibles avec les méthodes de recherche définies pour la table, mais que l’optimiseur de requête a estimé que l’optimisation de la recherche ne permettrait probablement pas d’améliorer les performances de la requête. Les requêtes ultérieures avec des prédicats différents ou des données différentes dans la table source peuvent utiliser l’optimisation de la recherche.

  • Lorsque la limite du prédicat est dépassée, le message suivant s’affiche :

    Search optimization service was not used because the
    predicate limit was exceeded.
    

    Ce message indique que le prédicat contient trop de prédicats distincts. Le nombre exact de prédicats d’optimisation de la recherche dépend des types de prédicats et peut ne pas correspondre exactement au nombre de prédicats de la requête. Les requêtes de sous-chaînes et les requêtes de recherche en texte intégral qui utilisent la syntaxe à caractère générique sont plus susceptibles d’atteindre la limite de prédicats.

L’image suivante montre un exemple de message de non-concordance de prédicat :

Affiche le nœud d'accès à l'optimisation de la recherche avec un message sur la raison de la non-utilisation de l'optimisation de la recherche.