SYS_QUERY_DETAIL - 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.

SYS_QUERY_DETAIL

Utilisez SYS_QUERY_DETAIL pour afficher les détails des requêtes à différents niveaux métriques, chaque ligne représentant les détails d'une requête WLM particulière à un niveau métrique donné. Cette vue contient de nombreux types de requêtes, comme les commandes DDL, DML et utilitaire (par exemple, copier et décharger). Certaines colonnes peuvent ne pas être pertinentes en fonction du type de requête. Par exemple, external_scanned_bytes n’est pas pertinent pour les tables internes.

SYS_QUERY_DETAIL 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 plus d'informations, consultez Visibilité des données dans les tables et vues système.

Colonnes de la table

Nom de la colonne Type de données Description
user_id entier Identificateur de l’utilisateur qui a envoyé la requête.
query_id bigint Identificateur de requête.
child_query_séquence entier La séquence de la requête utilisateur réécrite, en commençant par 1.
stream_id entier Identificateur de flux du flux d’exécution de la requête.
segment_id entier Identificateur du segment d’exécution de la requête.
step_id entier Identificateur d’étape dans un segment.
step_name text Nom de l’étape dans un segment. Les valeurs possibles sont aggregatebroadcast,delete,distribute,hash,hashjoin,insert,limit,merge,nestloop,parse,return,save,scan,sort,sortlimit,unique, etwindow.
table_id entier Identificateur de table pour les analyses permanentes de table.
table_name character(136) Nom de la table de l’étape en cours d’opération.
is_rrscan character Valeur qui indique si une étape est une étape d’analyse. La valeur true (t), indique qu’une analyse à plage restreinte a été utilisée.
start_time timestamp Heure à laquelle l’étape de requête a commencé. Ce champ est enregistré au niveau du segment, quelle que soit la valeur de la metrics_level colonne.
end_time timestamp Heure à laquelle l’étape de requête s’est terminée. Ce champ est enregistré au niveau du segment, quelle que soit la valeur de la metrics_level colonne.
duration bigint Temps (microsecondes) passé sur l’étape. Ce champ est enregistré au niveau du segment, quelle que soit la valeur de la metrics_level colonne.
alerte text Description de l’événement d’alerte.
input_bytes bigint Octets en entrée de l’étape en cours.
input_rows bigint Lignes d’entrée de l’étape en cours.
output_bytes bigint Octets de sortie de l’étape en cours.
output_rows bigint Lignes de sortie de l’étape en cours.
blocks_read bigint Nombre de blocs lus par l’étape.
blocks_write bigint Nombre de blocs écrits par l’étape.
local_read_IO bigint Nombre de blocs lus depuis le cache du disque local.
remote_read_IO bigint Nombre de blocs lus à distance.
source text Type d’objet de base de données qui a été scanné. Cette colonne n’a de valeur que lorsque la valeur step_name de la ligne est scan.
data_skewness entier Asymétrie de la répartition des lignes de sortie entre toutes les étapes. Il s’agit d’un nombre compris entre 0 et 100 %. Plus le nombre est élevé, plus la répartition est déséquilibrée.
time_skewness entier Asymétrie de la répartition du temps d’exécution entre toutes les étapes. Il s’agit d’un nombre compris entre 0 et 100 %. Plus le nombre est élevé, plus la répartition est déséquilibrée.
is_active character État de la requête au niveau de l’étape. Les valeurs possibles sont « t » (étape en cours d’exécution) ou « f » (étape en fin d’exécution).
spilled_block_local_disk bigint Nombre de blocs déversés sur le disque local.
spilled_block_remote_disk bigint Nombre de blocs déversés vers Amazon Simple Storage Service.
step_attribute character(64) Contient des informations concernant l’étape associée. Valeurs possibles pour les étapes d’analyse : multi-dimensional.
metrics_level character(64)

Le niveau métrique de la requête. Les valeurs possibles sont les suivantes :

  • requête pour enfant

  • stream

  • segment

  • step

plan_parent_id entier Identifiant du nœud parent du nœud du plan. Un nœud parent peut avoir plusieurs nœuds enfants. Par exemple, une jointure par fusion est le nœud parent des scans sur les tables jointes.
plan_node_id entier Identifiant d'un nœud de plan mappé à une ou plusieurs étapes de la requête.

Notes d’utilisation

SYS_QUERY_DETAIL peut contenir des métriques au niveau de l'étape, du stream, du segment et de la requête enfant. En plus de référencer la colonne metrics_level, vous pouvez voir le niveau de métrique affiché par une ligne donnée en référençant les champs step_id, segment_id et stream_id conformément au tableau suivant.

Niveau métrique valeur stream_id valeur segment_id valeur step_id
requête pour enfant -1 -1 -1
stream Une valeur d'étape valide -1 -1
segment Une valeur d'étape valide Une valeur d'étape valide -1
step Une valeur d'étape valide Une valeur d'étape valide Une valeur d'étape valide

Exemples de requêtes

L’exemple suivant renvoie la sortie de SYS_QUERY_DETAIL.

La requête suivante montre le détail des métadonnées de la requête au niveau de l’étape, y compris le nom de l’étape, input_bytes, output_bytes, input_rows, output_rows.

SELECT query_id, child_query_sequence, stream_id, segment_id, step_id, trim(step_name) AS step_name, duration, input_bytes, output_bytes, input_rows, output_rows FROM sys_query_detail WHERE query_id IN (193929) ORDER BY query_id, stream_id, segment_id, step_id DESC;

Exemple de sortie.

query_id | child_query_sequence | stream_id | segment_id | step_id | step_name | duration | input_bytes | output_bytes | input_rows | output_rows ----------+----------------------+-----------+------------+---------+------------+-----------------+-------------+--------------+------------+------------- 193929 | 2 | 0 | 0 | 3 | hash | 37144 | 0 | 9350272 | 0 | 292196 193929 | 5 | 0 | 0 | 3 | hash | 9492 | 0 | 23360 | 0 | 1460 193929 | 1 | 0 | 0 | 3 | hash | 46809 | 0 | 9350272 | 0 | 292196 193929 | 4 | 0 | 0 | 2 | return | 7685 | 0 | 896 | 0 | 112 193929 | 1 | 0 | 0 | 2 | project | 46809 | 0 | 0 | 0 | 292196 193929 | 2 | 0 | 0 | 2 | project | 37144 | 0 | 0 | 0 | 292196 193929 | 5 | 0 | 0 | 2 | project | 9492 | 0 | 0 | 0 | 1460 193929 | 3 | 0 | 0 | 2 | return | 11033 | 0 | 14336 | 0 | 112 193929 | 2 | 0 | 0 | 1 | project | 37144 | 0 | 0 | 0 | 292196 193929 | 1 | 0 | 0 | 1 | project | 46809 | 0 | 0 | 0 | 292196 193929 | 5 | 0 | 0 | 1 | project | 9492 | 0 | 0 | 0 | 1460 193929 | 3 | 0 | 0 | 1 | aggregate | 11033 | 0 | 201488 | 0 | 14 193929 | 4 | 0 | 0 | 1 | aggregate | 7685 | 0 | 28784 | 0 | 14 193929 | 5 | 0 | 0 | 0 | scan | 9492 | 0 | 23360 | 292196 | 1460 193929 | 4 | 0 | 0 | 0 | scan | 7685 | 0 | 1344 | 112 | 112 193929 | 2 | 0 | 0 | 0 | scan | 37144 | 0 | 7304900 | 292196 | 292196 193929 | 3 | 0 | 0 | 0 | scan | 11033 | 0 | 13440 | 112 | 112 193929 | 1 | 0 | 0 | 0 | scan | 46809 | 0 | 7304900 | 292196 | 292196 193929 | 5 | 0 | 0 | -1 | | 9492 | 12288 | 0 | 0 | 0 193929 | 1 | 0 | 0 | -1 | | 46809 | 16384 | 0 | 0 | 0 193929 | 2 | 0 | 0 | -1 | | 37144 | 16384 | 0 | 0 | 0 193929 | 4 | 0 | 0 | -1 | | 7685 | 28672 | 0 | 0 | 0 193929 | 3 | 0 | 0 | -1 | | 11033 | 114688 | 0 | 0 | 0

Pour afficher les tables de votre base de données dans l’ordre, de la plus utilisée à la moins utilisée, utilisez l’exemple suivant. sample_data_devRemplacez-le par votre propre base de données. Notez que cette requête compte les requêtes à partir de la création de votre cluster, mais que les données de votre vue système ne sont pas enregistrées lorsque votre entrepôt des données manque d’espace.

SELECT table_name, COUNT (DISTINCT query_id) FROM SYS_QUERY_DETAIL WHERE table_name LIKE 'sample_data_dev%' GROUP BY table_name ORDER BY COUNT(*) DESC; +---------------------------------+-------+ | table_name | count | +---------------------------------+-------+ | sample_data_dev.tickit.venue | 4 | | sample_data_dev.myunload1.venue | 3 | | sample_data_dev.tickit.listing | 1 | | sample_data_dev.tickit.category | 1 | | sample_data_dev.tickit.users | 1 | | sample_data_dev.tickit.date | 1 | | sample_data_dev.tickit.sales | 1 | | sample_data_dev.tickit.event | 1 | +---------------------------------+-------+

L'exemple suivant montre les différents niveaux de mesure pour une seule requête WLM.

SELECT query_id, child_query_sequence, stream_id, segment_id, step_id, step_name, start_time, end_time, metrics_level FROM sys_query_detail WHERE query_id = 1553 AND step_id = -1 ORDER BY stream_id, segment_id, step_id; query_id | child_query_sequence | stream_id | segment_id | step_id | step_name | start_time | end_time | metrics_level ----------+----------------------+-----------+------------+---------+-----------+----------------------------+----------------------------+--------------- 1553 | 1 | -1 | -1 | -1 | | 2024-10-17 02:28:49.814721 | 2024-10-17 02:28:49.847838 | child query 1553 | 1 | 0 | -1 | -1 | | 2024-10-17 02:28:49.814721 | 2024-10-17 02:28:49.835609 | stream 1553 | 1 | 0 | 0 | -1 | | 2024-10-17 02:28:49.824677 | 2024-10-17 02:28:49.830372 | segment 1553 | 1 | 1 | -1 | -1 | | 2024-10-17 02:28:49.835624 | 2024-10-17 02:28:49.845773 | stream 1553 | 1 | 1 | 1 | -1 | | 2024-10-17 02:28:49.84088 | 2024-10-17 02:28:49.842388 | segment 1553 | 1 | 1 | 2 | -1 | | 2024-10-17 02:28:49.835926 | 2024-10-17 02:28:49.844396 | segment 1553 | 1 | 2 | -1 | -1 | | 2024-10-17 02:28:49.846949 | 2024-10-17 02:28:49.847838 | stream 1553 | 1 | 2 | 3 | -1 | | 2024-10-17 02:28:49.847013 | 2024-10-17 02:28:49.847485 | segment (8 rows)