STL_QUERY - 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

renvoie les informations d’exécution d’une requête de base de données.

Note

Les vues STL_QUERY et STL_QUERYTEXT contiennent uniquement des informations sur les requêtes, pas sur d’autres utilitaires ou commandes DDL. Pour obtenir la liste et les informations de toutes les instructions exécutées par Amazon Redshift, vous pouvez également interroger les vues STL_DDLTEXT et STL_UTILITYTEXT. Pour obtenir la liste complète de toutes les instructions exécutées par Amazon Redshift vous pouvez interroger la vue SVL_STATEMENTTEXT.

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

Tout ou partie des données de cette table sont également disponibles dans la vue de surveillance SYS SYS_QUERY_HISTORY. Les données de la vue de surveillance SYS sont formatées pour être plus faciles à utiliser et à comprendre. Nous vous recommandons d’utiliser la vue de surveillance SYS 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 généré l’entrée.
query entier ID de requête. La colonne de requête peut servir à joindre les autres tables système et les vues.
étiquette caractère (320) Le nom du fichier utilisé pour exécuter la requête ou une étiquette définie avec une commande SET QUERY_GROUP. Si la requête n’est pas basée sur un fichier ou si le paramètre QUERY_GROUP n’est pas défini, la valeur du champ est default.
xid bigint ID de transaction.
pid entier ID du processus. En règle générale, toutes les requêtes d’une séance étant exécutées dans le même processus, cette valeur reste constante si vous exécutez une série de requêtes dans la même séance. Suite à certains événements internes, Amazon Redshift peut redémarrer une séance active et attribuer un nouveau PID. Pour plus d'informations, consultez STL_RESTARTED_SESSIONS.
database character(32) Nom de la base de données à laquelle l’utilisateur était connecté lorsque la requête a été émise.
querytxt character(4000) Texte réel de la requête.
starttime timestamp Heure au format UTC du début de la requête. Le temps total inclut la mise en file d'attente et l'exécution avec 6 chiffres de précision pour les fractions de secondes. Par exemple : 2009-06-12 11:29:19.131358.
endtime timestamp Heure au format UTC de l’exécution de la requête. Le temps total inclut la mise en file d'attente et l'exécution avec 6 chiffres de précision pour les fractions de secondes. Par exemple : 2009-06-12 11:29:19.131358.
aborted entier Si une requête a été arrêtée par le système ou annulée par l’utilisateur, cette colonne contient 1. Si la requête est terminée (y compris le retour des résultats au client), cette colonne contient 0. Si un client se déconnecte avant de recevoir les résultats, la requête est marquée comme annulée (1), même si elle s’est correctement terminée dans le backend.
insert_pristine entier Si les requêtes d’écriture sont/ont pu être exécutées pendant que la requête actuelle est/était en cours d’exécution. 1 = aucune requête d’écriture n’est autorisée. 0 = les requêtes d’écriture sont autorisées. Cette colonne est destinée à être utilisée dans le débogage.
concurrency_scaling_status entier

Indique si la requête a été exécutée sur le cluster principal ou sur un cluster de mise à l’échelle de simultanéité. Les valeurs possibles sont les suivantes :

0 - Exécutée sur le cluster principal

1 - Exécutée sur un cluster de mise à l’échelle de simultanéité

Supérieur à 1 - Exécutée sur le cluster principal

Exemples de requêtes

La requête suivante répertorie les cinq requêtes les plus récentes.

select query, trim(querytxt) as sqlquery from stl_query order by query desc limit 5; query | sqlquery ------+-------------------------------------------------- 129 | select query, trim(querytxt) from stl_query order by query; 128 | select node from stv_disk_read_speeds; 127 | select system_status from stv_gui_status 126 | select * from systable_topology order by slice 125 | load global dict registry (5 rows)

La requête suivante renvoie la durée écoulée, par ordre décroissant, des requêtes exécutées le 15 février 2013.

select query, datediff(seconds, starttime, endtime), trim(querytxt) as sqlquery from stl_query where starttime >= '2013-02-15 00:00' and endtime < '2013-02-16 00:00' order by date_diff desc; query | date_diff | sqlquery -------+-----------+------------------------------------------- 55 | 119 | padb_fetch_sample: select count(*) from category 121 | 9 | select * from svl_query_summary; 181 | 6 | select * from svl_query_summary where query in(179,178); 172 | 5 | select * from svl_query_summary where query=148; ... (189 rows)

La requête suivante montre le temps d’attente et le temps d’exécution des requêtes. Les requêtes avec concurrency_scaling_status = 1 ont été exécutées sur un cluster de mise à l’échelle de simultanéité. Toutes les autres requêtes ont été exécutées sur le cluster principal.

SELECT w.service_class AS queue , q.concurrency_scaling_status , COUNT( * ) AS queries , SUM( q.aborted ) AS aborted , SUM( ROUND( total_queue_time::NUMERIC / 1000000,2 ) ) AS queue_secs , SUM( ROUND( total_exec_time::NUMERIC / 1000000,2 ) ) AS exec_secs FROM stl_query q JOIN stl_wlm_query w USING (userid,query) WHERE q.userid > 1 AND service_class > 5 AND q.starttime > '2019-03-01 16:38:00' AND q.endtime < '2019-03-01 17:40:00' GROUP BY 1,2 ORDER BY 1,2;