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

SVCS_EXPLAIN

Affiche le EXPLAIN plan d'une requête qui a été soumise pour exécution.

Note

Les vues du système avec le préfixe SVCS fournissent des détails sur les requêtes sur les clusters de dimensionnement principaux et simultanés. Les vues sont similaires aux tables avec le préfixe, STL sauf que les STL tables fournissent des informations uniquement pour les requêtes exécutées sur le cluster principal.

SVCS_ EXPLAIN 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
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.
nodeid entier Identificateur de nœud de plan, où un nœud correspond à une ou plusieurs étapes de l’exécution de la requête.
parentid entier Identificateur de nœud de plan d’un nœud parent. Un nœud parent a un certain nombre de nœuds enfants. Par exemple, une jointure de fusion est le parent des analyses des tables jointes.
plannode character(400) Le texte du nœud issu de la EXPLAIN sortie. Les nœuds de plan qui font référence à l'exécution sur des nœuds de calcul sont préfixés par un préfixe XN dans la EXPLAIN sortie.
info character(400) Informations de qualificateur et de filtre pour le nœud de plan. Par exemple, les conditions de jointure et les restrictions de WHERE clause sont incluses dans cette colonne.

Exemples de requêtes

Examinez le EXPLAIN résultat suivant pour une requête de jointure agrégée :

explain select avg(datediff(day, listtime, saletime)) as avgwait from sales, listing where sales.listid = listing.listid; QUERY PLAN ------------------------------------------------------------------------------ XN Aggregate (cost=6350.30..6350.31 rows=1 width=16) -> XN Hash Join DS_DIST_NONE (cost=47.08..6340.89 rows=3766 width=16) Hash Cond: ("outer".listid = "inner".listid) -> XN Seq Scan on listing (cost=0.00..1924.97 rows=192497 width=12) -> XN Hash (cost=37.66..37.66 rows=3766 width=12) -> XN Seq Scan on sales (cost=0.00..37.66 rows=3766 width=12) (6 rows)

Si vous exécutez cette requête et que son ID de requête est 10, vous pouvez utiliser la EXPLAIN table SVCS _ pour voir le même type d'informations que celles renvoyées par la EXPLAIN commande :

select query,nodeid,parentid,substring(plannode from 1 for 30), substring(info from 1 for 20) from svcs_explain where query=10 order by 1,2; query| nodeid |parentid| substring | substring -----+--------+--------+--------------------------------+------------------- 10 | 1 | 0 |XN Aggregate (cost=6717.61..6 | 10 | 2 | 1 | -> XN Merge Join DS_DIST_NO| Merge Cond:("outer" 10 | 3 | 2 | -> XN Seq Scan on lis | 10 | 4 | 2 | -> XN Seq Scan on sal | (4 rows)

Considérons la requête suivante :

select event.eventid, sum(pricepaid) from event, sales where event.eventid=sales.eventid group by event.eventid order by 2 desc; eventid | sum --------+---------- 289 | 51846.00 7895 | 51049.00 1602 | 50301.00 851 | 49956.00 7315 | 49823.00 ...

Si l’ID de requête est le 15, la requête de la table système suivante renvoie les nœuds de plan qui ont été exécutés. Dans ce cas, l’ordre des nœuds est inversé pour afficher l’ordre réel d’exécution :

select query,nodeid,parentid,substring(plannode from 1 for 56) from svcs_explain where query=15 order by 1, 2 desc; query|nodeid|parentid| substring -----+------+--------+-------------------------------------------------------- 15 | 8 | 7 | -> XN Seq Scan on eve 15 | 7 | 5 | -> XN Hash(cost=87.98..87.9 15 | 6 | 5 | -> XN Seq Scan on sales(cos 15 | 5 | 4 | -> XN Hash Join DS_DIST_OUTER(cos 15 | 4 | 3 | -> XN HashAggregate(cost=862286577.07.. 15 | 3 | 2 | -> XN Sort(cost=1000862287175.47..10008622871 15 | 2 | 1 | -> XN Network(cost=1000862287175.47..1000862287197. 15 | 1 | 0 |XN Merge(cost=1000862287175.47..1000862287197.46 rows=87 (8 rows)

La requête suivante extrait la requête IDs pour tous les plans de requête contenant une fonction de fenêtre :

select query, trim(plannode) from svcs_explain where plannode like '%Window%'; query| btrim -----+------------------------------------------------------------------------ 26 | -> XN Window(cost=1000985348268.57..1000985351256.98 rows=170 width=33) 27 | -> XN Window(cost=1000985348268.57..1000985351256.98 rows=170 width=33) (2 rows)