Un Query profile capture les informations d'exécution de tous les nœuds worker impliqués dans une requête. Grâce à une analyse visuelle, le Query profile vous permet d'identifier rapidement les goulots d'étranglement liés aux performances des requêtes au sein d'une instance StarRocks.
Enable query profile
Pour activer le Query profile sur votre instance, définissez la variable enable_profile sur true.
SET enable_profile = true;
Si votre instance utilise une version du noyau 2.5.13 ou ultérieure (série 2.x) ou 3.1.5 ou ultérieure (série 3.x), vous pouvez activer globalement le Query profile sans impacter les performances des requêtes.
Pour les versions du noyau antérieures à celles indiquées ci-dessus, mettez à niveau le noyau avant d'activer le Query profile afin d'éviter toute dégradation des performances des requêtes.
Structure du Query profile
Un Query profile se compose des cinq éléments suivants :
Fragment : arbre d'exécution. Une requête comprend un ou plusieurs fragments.
Instance de fragment : un fragment peut comporter plusieurs instances, appelées instances de fragment. Chacune s'exécute sur un nœud de calcul différent.
Pipeline : chaîne d'exécution. Un pipeline est constitué d'une série d'opérateurs. Une instance de fragment se décompose en un ou plusieurs pipelines.
Pilote de pipeline : un pipeline peut comporter plusieurs instances, appelées pilotes de pipeline, afin d'exploiter pleinement plusieurs cœurs.
Opérateur : composant d'un pilote de pipeline. Un pilote de pipeline est composé de plusieurs opérateurs.
Visualiser un Query Profile
StarRocks Manager représente le Query Profile sous forme d'arborescence, où chaque nœud correspond à un opérateur agrégé. Cliquez sur un opérateur pour afficher ses détails dans les onglets situés à droite de la page. Si aucun opérateur n'est sélectionné, la partie droite affiche l'aperçu de la requête (Query overview).
Aperçu de l'exécution
La page Execution Details affiche un plan d'exécution visuel sous forme d'arbre à gauche. Chaque nœud d'opérateur indique son temps d'exécution et le pourcentage correspondant. Les nœuds gourmands en temps, tels que HASH_JOIN, sont mis en évidence en rouge. Les lignes reliant les nœuds indiquent le nombre de lignes traitées. À droite, la section supérieure présente une liste triée des nœuds par pourcentage de temps, tandis que la section inférieure fournit un aperçu des métriques récapitulatives.
La page Execution Details affiche les principales métriques récapitulatives, notamment le temps d'exécution, les performances des E/S et le volume de transfert de données réseau.
-
Total
Metric
Description
Total
Temps total consommé par la requête. Cette durée inclut les phases de planification, d'exécution et d'analyse.
PlannerTotalTime
Temps de planification. Cela comprend l'analyse syntaxique du code SQL, l'analyse, l'optimisation et la génération du plan d'exécution.
ExecutionWallTime
Temps d'exécution de la requête et temps d'exécution côté BE (temps horloge réel de l'exécution).
CollectProfileTime
Temps de collecte du profil. Il s'agit du temps consacré à la collecte des métriques de profil auprès des BE.
-
Execution time
Metric
Description
ExecutionWallTime
Temps total consommé par l'exécution de la requête.
CumulativeCpuTime
Somme du temps CPU pour tous les nœuds BE. Cette valeur reflète la consommation totale des ressources CPU.
CpuUtilization
Utilisation du CPU = CumulativeCpuTime / ExecutionWallTime. Cette valeur indique le nombre moyen de cœurs CPU utilisés.
CumulativeWaitTime
Temps d'attente cumulé du pipeline. Cela inclut le temps d'attente de planification (ScheduleTime) et le temps de blocage (PendingTime) dus à des conditions telles qu'une file d'entrée vide, une file de sortie pleine ou des dépendances non prêtes.
OperatorCumulativetime
Somme des temps d'exécution de tous les opérateurs. Cela inclut les E/S, le réseau et le calcul.
IO
Temps d'E/S cumulé pour tous les opérateurs Scan. Cela inclut les lectures sur disque local, les lectures distantes et l'accès au cache de données.
-
I/O
Metric
Description
RawRowsRead
Nombre total d'enregistrements analysés par tous les nœuds SCAN.
DiskReadBytes
Volume total de données compressées lues par tous les nœuds d'exécution SCAN.
LocalDiskReadBytes
Taille totale des données compressées lues depuis le cache local par tous les nœuds d'exécution Connector Scan. Cette métrique s'applique uniquement aux instances à données partagées.
RemoteReadBytes
Taille totale des données compressées lues depuis OSS par tous les nœuds d'exécution Connector Scan. Cette métrique s'applique uniquement aux instances à données partagées.
ResultRows
Nombre total d'enregistrements produits par tous les nœuds d'exécution SCAN.
ResultBytes
Volume total de données lues par tous les nœuds d'exécution SCAN.
-
Network
Metric
Description
Bytes sent over network
Nombre total d'octets transférés par tous les nœuds d'exécution Exchange. Cela correspond à la métrique BytesSent.
Opérateur
Cliquez sur un opérateur pour afficher les informations suivantes à droite de la page :
Onglet CoreMetrics : affiche les métriques principales de l'opérateur.
Onglet NodeMetrics : affiche toutes les métriques de l'opérateur.
Onglet Pipeline : affiche les métriques du pipeline contenant l'opérateur. Ces métriques concernent uniquement la planification et ne nécessitent pas une attention particulière.
Plus la proportion de temps passée par un opérateur est élevée, plus sa couleur est foncée. Les trois nœuds ayant les temps d'exécution les plus longs sont codés par couleur. Cela vous aide à identifier facilement les goulots d'étranglement des requêtes.
Faites défiler la molette de la souris ou cliquez sur les boutons de zoom pour agrandir ou réduire l'arborescence du profil.
Métriques clés
Niveau de la requête
-
Métriques récapitulatives
Metric
Description
Total
Durée totale écoulée de la requête, y compris le temps passé dans les phases de planification (Planning), d'exécution (Executing) et de profilage (Profiling).
QueryCpuCost
Temps CPU cumulé consommé par la requête. Cette valeur correspond à la somme du temps CPU de tous les processus simultanés ; elle peut donc dépasser le temps d'exécution réel.
QueryMemCost
Mémoire totale consommée par la requête.
Variables
Variables associées à la requête.
-
Niveau du pipeline
Metric
Description
ActiveTime
Temps d'exécution du pilote.
DriverTotalTime
Temps total consommé par le pilote.
PendingTime
Temps pendant lequel un pilote attend ses entrées et prérequis.
Niveau de l'opérateur
-
Métriques générales des opérateurs
Metric
Description
OperatorTotalTime
Temps d'exécution total de l'opérateur.
PushRowNum
Nombre total de lignes produites par l'opérateur.
PullRowNum
Nombre total de lignes reçues en entrée par l'opérateur.
PullChunkNum
Nombre total de chunks reçus en entrée par l'opérateur.
PushChunkNum
Nombre total de chunks produits par l'opérateur.
PeakMemoryUsage
Utilisation mémoire maximale de l'opérateur.
-
Opérateur OLAP Scan
Metric
Description
Table
Nom de la table.
ScanTime
Temps total consacré aux opérations de scan, effectuées dans un pool de threads d'E/S asynchrones.
TabletCount
Nombre de tablets analysés.
PushdownPredicates
Nombre de prédicats poussés vers le bas (pushed-down).
BytesRead
Volume de données lues.
CompressedBytesRead
Volume de données compressées lues.
IOTime
Temps d'E/S total.
BitmapIndexFilterRows
Nombre de lignes filtrées par les index bitmap.
BloomFilterFilterRows
Nombre de lignes filtrées par le filtre Bloom.
SegmentRuntimeZoneMapFilterRows
Nombre de lignes filtrées par la zone map d'exécution (runtime zone map).
SegmentZoneMapFilterRows
Nombre de lignes filtrées par la zone map.
ShortKeyFilterRows
Nombre de lignes filtrées par la clé courte (short key).
ZoneMapIndexFilterRows
Nombre de lignes filtrées par l'index de zone map.
-
Opérateur Connector Scan
Ces métriques s'ajoutent à celles de l'opérateur OLAP Scan et s'appliquent aux instances utilisant la séparation du calcul et du stockage.
Metric
Description
CompressedBytesReadLocalDisk
Volume de données compressées lues depuis le cache local sur le nœud de calcul.
CompressedBytesReadRemote
Volume total de données compressées lues depuis OSS.
IOTimeLocalDisk
Temps consacré aux opérations d'E/S lors de la lecture des données depuis le cache local.
IOTimeRemote
Temps consacré aux opérations d'E/S lors de la lecture des données depuis OSS.
-
Opérateur Exchange
-
Sink
Metric
Description
PartType
Mode de distribution des données. Valeurs valides :
UNPARTITIONED,RANDOM,HASH_PARTITIONEDetBUCKET_SHUFFLE_HASH_PARTITIONED.BytesSent
Volume de données envoyées.
OverallThroughput
Débit global de transfert de données.
NetworkTime
Temps consacré à la transmission des paquets, hors temps de traitement post-réception.
WaitTime
Temps d'attente dû au remplissage de la file d'attente côté émetteur.
NetworkBandwidth
Bande passante réseau calculée pendant le transfert de données.
-
Source
Metric
Description
SenderWaitLockTime
Temps total pendant lequel l'émetteur a attendu un verrou.
BytesReceived
Volume de données reçues.
DecompressChunkTime
Temps total consacré à la décompression des chunks de données.
DeserializeChunkTime
Temps total consacré à la désérialisation des chunks de données.
SenderTotalTime
Temps total consacré par l'émetteur.
-
-
Opérateur Aggregate
Metric
Description
GroupingKeys
Colonnes utilisées dans la clause GROUP BY.
AggregateFunctions
Fonctions d'agrégation appliquées.
AggComputeTime
Temps consacré au calcul des fonctions d'agrégation.
ExprComputeTime
Temps consacré au calcul des expressions.
HashTableSize
Taille de la table de hachage utilisée pour l'agrégation.
-
Opérateur Join
-
Probe
Metric
Description
DistributionMode
Mode de distribution des données.
JoinType
Type de jointure.
OtherJoinConjunctEvaluateTime
Temps consacré à l'évaluation des autres conjonctions de jointure.
ProbeConjunctEvaluateTime
Temps consacré à l'évaluation des conjonctions de probe.
SearchHashTableTime
Temps consacré à la recherche dans la table de hachage.
WhereConjunctEvaluateTime
Temps consacré à l'évaluation des conjonctions WHERE.
-
Build
Metric
Description
JoinPredicates
Prédicats utilisés dans la condition de jointure.
JoinType
Type de jointure.
BuildBuckets
Nombre de buckets dans la table de hachage de la jointure.
BuildHashTableTime
Temps consacré à la construction de la table de hachage pour la jointure.
RuntimeFilterBuildTime
Temps consacré à la construction du filtre d'exécution (runtime filter).
RuntimeFilterNum
Nombre de filtres d'exécution (runtime filters).
DistributionMode
Mode de distribution des données.
-
-
Opérateur Window Function
Metric
Description
ComputeTime
Temps consacré au calcul des fonctions de fenêtrage.
PartitionKeys
Clés utilisées pour partitionner la fenêtre.
AggregateFunctions
Fonctions d'agrégation appliquées.
-
Opérateur Sort
Metric
Description
SortKeys
Clés de tri.
SortType
Méthode de tri utilisée, telle que le tri complet ou le tri top-N.
MergingTime
Temps consacré à la fusion des runs de données triées.
SortingTime
Temps consacré au tri des données.
-
Opérateur TableFunction
Metric
Description
TableFunctionExecTime
Temps consacré au calcul de la fonction de table.
TableFunctionExecCount
Nombre d'exécutions de la fonction de table.
-
Opérateur Project
Metric
Description
ExprComputeTime
Temps consacré au calcul des expressions.
CommonSubExprComputeTime
Temps consacré au calcul des sous-expressions communes.
-
Opérateur LocalExchange
Metric
Description
Type
Type d'échange local. Valeurs valides :
Passthrough,PartitionetBroadcast.ShuffleNum
Nombre de shuffles. Cette métrique s'applique uniquement lorsque
TypeestPartition.