STL_QUERY_METRICS - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

STL_QUERY_METRICS

Contient des informations métriques, telles que le nombre de lignes traitées, l'CPUutilisation, les entrées/sorties et l'utilisation du disque, pour les requêtes dont l'exécution est terminée dans des files d'attente de requêtes définies par l'utilisateur (classes de service). Pour afficher les métriques des requêtes actives qui sont en cours d’exécution, consultez la vue système STV_QUERY_METRICS.

Les métriques de requête sont échantillonnées toutes les secondes. Par conséquent, la même requête exécutée plusieurs fois peut renvoyer des heures légèrement différentes. En outre, il est possible que les segments de requête qui s’exécutent en moins d’une seconde ne soient pas enregistrés.

STL_ QUERY _ METRICS suit et agrège les métriques au niveau de la requête, du segment et de l'étape. Pour plus d’informations sur les segments et les étapes de requête, consultez Workflow d’exécution et de planification de requête. De nombreuses métriques (max_rows, cpu_time, etc.) sont additionnées entre les tranches de nœuds. Pour plus d’informations sur les tranches de nœuds, consultez Architecture système de l’entrepôt des données.

Pour déterminer le niveau auquel la ligne communique les métriques, observez les colonnes segment et step_type.

  • Si segment et step_type sont définis sur -1, la ligne communique les métriques au niveau de la requête.

  • Si segment n’est pas défini sur -1 et si step_type est défini sur -1, la ligne communique les métriques au niveau du segment.

  • Si segment et step_type ne sont pas définis sur -1, la ligne communique les métriques au niveau de l’étape.

Les vues SVL_QUERY_METRICS et SVL_QUERY_METRICS_SUMMARY regroupent les données de cette vue et présentent les informations de manière plus accessible.

STL_ QUERY _ METRICS est visible par tous les utilisateurs. Les super-utilisateurs peuvent voir toutes les lignes, tandis que les utilisateurs standard peuvent voir uniquement leurs propres données. Pour de plus amples informations, veuillez consulter Visibilité des données dans les tables et vues système.

Certaines ou toutes les données de ce tableau se trouvent également dans la vue SYS de surveillanceSYS_QUERY_DETAIL. Les données de la vue SYS de surveillance sont formatées pour être plus faciles à utiliser et à comprendre. Nous vous recommandons d'utiliser la vue SYS de surveillance pour vos requêtes.

Colonnes de la table

Nom de la colonne Type de données Description
userid entier ID de l’utilisateur qui a exécuté la requête qui a généré l’entrée.
service_class entier ID de la classe de service. Les files d'attente de requêtes sont définies dans la WLM configuration. Les métriques sont communiquées uniquement pour les files d’attente définies par l’utilisateur.
query entier ID de requête. La colonne de requête peut servir à joindre les autres tables système et les vues.
segment entier Numéro de segment. Une requête se compose de plusieurs segments et chaque segment d’une ou de plusieurs étapes. Les segments de requête peuvent s’exécuter en parallèle. Chaque segment s’exécute dans un processus unique. Si le segment a une valeur de -1, les valeurs du segment de métriques sont reportées au niveau de la requête.
step_type entier Type de l’étape exécutée. Pour obtenir une description des types d’étapes, consultez Types d’étapes.
starttime timestamp Heure à UTC laquelle la requête a commencé à s'exécuter, avec une précision de 6 chiffres pendant des fractions de secondes. olpPar exemple : 2009-06-12 11:29:19.131358.
slices entier Nombre de tranches du cluster.
max_rows bigint Nombre maximal de lignes produites pour une étape, regroupées entre toutes les tranches.
rows bigint Nombre de lignes traitées par une étape.
max_cpu_time bigint CPUDurée maximale utilisée, en microsecondes. Au niveau du segment, CPU durée maximale utilisée par le segment pour toutes les tranches. Au niveau de la requête, CPU durée maximale utilisée par un segment de requête.
cpu_time bigint CPUtemps utilisé, en microsecondes. Au niveau du segment, CPU durée totale du segment pour toutes les tranches. Au niveau de la requête, somme du CPU temps passé par la requête sur l'ensemble des tranches et segments.
max_blocks_read bigint Nombre maximal de blocs d’1 Mo lus par le segment, regroupés entre toutes les tranches. Au niveau du segment, nombre maximal de blocs d’1 Mo lus pour le segment entre toutes les tranches. Au niveau de la requête, nombre maximal de blocs d’1 Mo lus par n’importe quel segment de la requête.
blocks_read bigint Nombre de blocs d’1 Mo lus par la requête ou le segment.
max_run_time bigint Durée maximale écoulée pour un segment (en microsecondes). Au niveau du segment, durée maximale d’exécution pour le segment entre toutes les tranches. Au niveau de la requête, durée maximale d’exécution pour n’importe quel segment de requête.
run_time bigint

Somme des durées totales d’exécution, entre les tranches. La durée d’attente n’est pas incluse dans le délai d’exécution.

Au niveau du segment, somme des durées d’exécution pour le segment entre toutes les tranches. Au niveau de la requête, somme des durées d’exécution pour la requête entre toutes les tranches et tous les segments. Puisqu’il s’agit d’une somme, le délai d’exécution n’est pas lié au délai d’exécution de la requête.

max_blocks_to_disk bigint Quantité maximale d’espace disque utilisé pour écrire des résultats intermédiaires, en blocs de Mo. Au niveau du segment, quantité maximale d’espace disque utilisé par le segment entre toutes les tranches. Au niveau de la requête, quantité maximale d’espace disque utilisé par n’importe quel segment de requête.
blocks_to_disk bigint Quantité d’espace disque utilisé par une requête ou un segment pour écrire des résultats intermédiaires, en blocs de Mo.
étape entier Étape de la requête exécutée.
max_query_scan_size bigint Taille maximale des données analysées par une requête, en Mo. Au niveau du segment, taille maximale des données analysées par le segment entre toutes les tranches. Au niveau de la requête, taille maximale des données analysées par n’importe quel segment de requête.
query_scan_size bigint Taille des données analysées par une requête, en Mo.
query_priority entier Priorité de la requête. Les valeurs possibles sont -1, 0, 1, 2, 3 et 4, où -1 signifie que cette priorité de requête n’est pas prise en charge.
query_queue_time bigint Durée, en microsecondes, pendant laquelle la requête a été mise en file d’attente.
service_class_name character(64) Nom de la classe de service.

Exemple de requête

Pour rechercher des requêtes dont le CPU délai est élevé (plus de 1 000 secondes), exécutez la requête suivante.

Select query, cpu_time / 1000000 as cpu_seconds from stl_query_metrics where segment = -1 and cpu_time > 1000000000 order by cpu_time; query | cpu_seconds ------+------------ 25775 | 9540

Pour rechercher des requêtes actives avec une jonction de boucles imbriquées qui a renvoyé plus d’un million de lignes, exécutez la requête suivante.

select query, rows from stl_query_metrics where step_type = 15 and rows > 1000000 order by rows; query | rows ------+----------- 25775 | 2621562702

Pour rechercher les requêtes actives exécutées pendant plus de 60 secondes et utilisées moins de CPU 10 secondes, exécutez la requête suivante.

select query, run_time/1000000 as run_time_seconds from stl_query_metrics where segment = -1 and run_time > 60000000 and cpu_time < 10000000; query | run_time_seconds ------+----------------- 25775 | 114