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 plan EXPLAIN pour une requête qui a été soumise à exécution.

Note

Les vues système dotées du préfixe SVCS fournissent des détails à propos des requêtes sur le cluster principal et les clusters de mise à l’échelle de la simultanéité. Elles sont similaires aux tables dotées du préfixe STL, si ce n’est que les tables STL 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) Texte du nœud de la sortie EXPLAIN. Les nœuds de plan qui font référence à l’exécution sur les nœuds de calcul sont préfixés par XN dans la sortie EXPLAIN.
info character(400) Informations de qualificateur et de filtre pour le nœud de plan. Par exemple, les conditions de jointure et les restrictions clause WHERE sont incluses dans cette colonne.

Exemples de requêtes

Considérons la sortie EXPLAIN suivante d’une requête de jointure d’agrégation :

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 table SVCS_EXPLAIN pour afficher le même type d’informations que renvoie la commande EXPLAIN :

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 récupère les ID de requête des plans de requête contenant une fonction de fenêtrage :

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)