STL_QUERYTEXT - 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_QUERYTEXT

Capture le texte de la requête pour SQL les commandes.

Interrogez la QUERYTEXT vue STL _ pour capturer les instructions suivantes SQL qui ont été enregistrées :

  • SELECT, SELECT INTO

  • INSERT, UPDATE, DELETE

  • COPY

  • UNLOAD

  • Les requêtes générées en exécutant VACUUM et ANALYZE

  • CREATETABLEEN TANT QUE (CTAS)

Pour rechercher l'activité associée à ces instructions sur une période donnée, joignez les QUERY vues STL STL _ QUERYTEXT et _.

Note

Les QUERYTEXT vues STL _ QUERY et STL _ contiennent uniquement des informations sur les requêtes, pas d'autres utilitaires ou DDL commandes. Pour obtenir une liste et des informations sur 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.

Consultez aussi STL_DDLTEXT, STL_UTILITYTEXT et SVL_STATEMENTTEXT.

STL_ QUERYTEXT 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_TEXT. 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 généré l’entrée.
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. À la suite de certains événements internes, Amazon Redshift peut redémarrer une session active et en attribuer une nouvelle. PID Pour de plus amples informations, veuillez consulter STL_RESTARTED_SESSIONS. Vous pouvez utiliser cette colonne pour la joindre à la vue STL_ERROR.
query entier ID de requête. La colonne de requête peut servir à joindre les autres tables système et les vues.
sequence entier Lorsqu’une seule instruction contient plus de 200 caractères, des lignes supplémentaires sont enregistrées pour l’instruction. Sequence 0 correspond à la première ligne, 1 à la deuxième, et ainsi de suite.
text character(200) SQLtexte, par incréments de 200 caractères. Ce champ peut contenir des caractères spéciaux tels qu’une barre oblique inverse (\\) et un caractère de saut de ligne (\n).

Exemples de requêtes

Vous pouvez utiliser la fonction PG_ BACKEND _ PID () pour récupérer les informations de la session en cours. Par exemple, la requête suivante renvoie l’ID de requête et une partie du texte de la requête pour des requêtes exécutées dans la séance en cours.

select query, substring(text,1,60) from stl_querytext where pid = pg_backend_pid() order by query desc; query | substring -------+-------------------------------------------------------------- 28262 | select query, substring(text,1,80) from stl_querytext where 28252 | select query, substring(path,0,80) as path from stl_unload_l 28248 | copy category from 's3://dw-tickit/manifest/category/1030_ma 28247 | Count rows in target table 28245 | unload ('select * from category') to 's3://dw-tickit/manifes 28240 | select query, substring(text,1,40) from stl_querytext where (6 rows)

Reconstruction d'un entrepôt SQL

Pour reconstruire le contenu SQL stocké dans la text colonne de STL _QUERYTEXT, exécutez une SELECT instruction pour créer à SQL partir d'une ou plusieurs parties de la text colonne. Avant d'exécuter la reconstructionSQL, remplacez tous les caractères spéciaux (\n) par une nouvelle ligne. Le résultat de l'SELECTinstruction suivante est des lignes reconstruites SQL dans le query_statement champ.

SELECT query, LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END) WITHIN GROUP (ORDER BY sequence) as query_statement, COUNT(*) as row_count FROM stl_querytext GROUP BY query ORDER BY query desc;

Par exemple, la requête suivante sélectionne 3 colonnes. La requête elle-même comporte plus de 200 caractères et est stockée en plusieurs parties dans STL _QUERYTEXT.

select 1 AS a0123456789012345678901234567890123456789012345678901234567890, 2 AS b0123456789012345678901234567890123456789012345678901234567890, 3 AS b012345678901234567890123456789012345678901234 FROM stl_querytext;

Dans cet exemple, la requête est stockée en deux parties (lignes) dans la text colonne STL _QUERYTEXT.

select query, sequence, text from stl_querytext where query=pg_last_query_id() order by query desc, sequence limit 10;
query | sequence | text -------+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 45 | 0 | select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234 45 | 1 | \nFROM stl_querytext;

Pour reconstruire le contenu SQL stocké dans STL _QUERYTEXT, exécutez ce qui suitSQL.

select LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') within group (order by sequence) AS text from stl_querytext where query=pg_last_query_id();

Pour utiliser le résultat reconstruit SQL dans votre client, remplacez tous les caractères spéciaux (\n) par une nouvelle ligne.

text ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234\nFROM stl_querytext;