O query profile captura informações de execução de todos os nós workers envolvidos em uma consulta. Use o query profile para identificar rapidamente gargalos de desempenho em uma instância do StarRocks por meio de análise visual.
Ative o query profile
Para ativar o query profile na sua instância, defina a variável enable_profile como true.
SET enable_profile = true;
Ative o query profile globalmente sem afetar o desempenho da consulta se a instância utilizar a versão de kernel 2.5.13 ou posterior (série 2.x) ou 3.1.5 ou posterior (série 3.x).
Em versões de kernel anteriores às listadas acima, atualize o kernel antes de ativar o query profile para evitar degradação no desempenho das consultas.
Estrutura do query profile
O query profile é composto pelas cinco partes a seguir:
Fragment: árvore de execução. Uma consulta consiste em um ou mais fragments.
Fragment instance: um fragment pode ter várias instâncias, cada uma chamada de fragment instance. Cada uma executa em um nó de computação diferente.
Pipeline: cadeia de execução. Um pipeline consiste em uma série de operadores. Uma fragment instance divide-se em um ou mais pipelines.
Pipeline driver: um pipeline pode ter várias instâncias, cada uma chamada de pipeline driver, para aproveitar totalmente os múltiplos núcleos.
Operator: componente de um pipeline driver. Um pipeline driver é formado por vários operators.
Visualize um Query Profile
O StarRocks Manager visualiza o Query Profile como uma estrutura de árvore, em que cada nó representa um Operator agregado. Clique em um Operator para visualizar seus detalhes nas abas à direita da página. Se nenhum Operator estiver selecionado, o lado direito exibe a visão geral da consulta (Query overview).
Visão geral da execução
A página Execution Details mostra uma árvore visual do plano de execução à esquerda. Cada nó de operador exibe seu tempo de execução e porcentagem. Nós com alto consumo de tempo, como HASH_JOIN, são destacados em vermelho. As linhas entre os nós indicam o número de linhas processadas. À direita, a seção superior apresenta uma lista de nós ordenada por porcentagem de tempo, enquanto a seção inferior fornece uma visão geral das métricas de resumo.
A página Execution Details exibe métricas de resumo essenciais, incluindo tempo de execução, desempenho de I/O e volume de transferência de dados pela rede.
-
Total
Metric
Description
Total
Tempo total consumido pela consulta. Inclui a duração das fases de planejamento, execução e análise.
PlannerTotalTime
Tempo de planejamento. Abrange a análise do SQL, otimização e geração do plano de execução.
ExecutionWallTime
Tempo de execução da consulta e tempo de execução no lado do BE (tempo real decorrido durante a execução).
CollectProfileTime
Tempo de coleta do profile. Refere-se ao tempo gasto coletando métricas de profile dos BEs.
-
Execution time
Metric
Description
ExecutionWallTime
Tempo total consumido pela execução da consulta.
CumulativeCpuTime
Soma do tempo de cpu de todos os nós BE. Reflete o consumo total de recursos de cpu.
CpuUtilization
Utilização de cpu = CumulativeCpuTime / ExecutionWallTime. Indica o número médio de núcleos de cpu utilizados.
CumulativeWaitTime
Tempo de espera acumulado do pipeline. Inclui tempo de espera de agendamento (ScheduleTime) e tempo de bloqueio (PendingTime) devido a condições como fila de entrada vazia, fila de saída cheia ou dependências não prontas.
OperatorCumulativetime
Soma dos tempos de execução de todos os operadores. Engloba I/O, rede e computação.
IO
Tempo de I/O acumulado para todos os operadores Scan. Compreende leituras de disco local, leituras remotas e acesso ao cache de dados.
-
I/O
Metric
Description
RawRowsRead
Número total de registros verificados por todos os nós SCAN.
DiskReadBytes
Quantidade total de dados compactados lidos por todos os nós de execução SCAN.
LocalDiskReadBytes
Tamanho total de dados compactados lidos do cache local por todos os nós de execução Connector Scan. Esta métrica aplica-se apenas a instâncias com dados compartilhados.
RemoteReadBytes
Tamanho total de dados compactados lidos do oss por todos os nós de execução Connector Scan. Esta métrica aplica-se apenas a instâncias com dados compartilhados.
ResultRows
Número total de registros gerados por todos os nós de execução SCAN.
ResultBytes
Quantidade total de dados lidos por todos os nós de execução SCAN.
-
Network
Metric
Description
Bytes sent over network
Número total de bytes transferidos por todos os nós de execução Exchange. Corresponde à métrica BytesSent.
Operator
Clique em um operator para visualizar as seguintes informações à direita da página:
Aba CoreMetrics: exibe as métricas principais do operator.
Aba NodeMetrics: apresenta todas as métricas do operator.
Aba Pipeline: mostra as métricas do pipeline que contém o operator. Essas métricas referem-se apenas ao agendamento e não exigem atenção especial.
Quanto maior a proporção de tempo gasta por um operator, mais escura será sua cor. Os três nós com os maiores tempos de execução recebem codificação de cores específica. Isso facilita a identificação de gargalos na consulta.
Use a roda do mouse ou clique em nos botões de zoom para ampliar ou reduzir a árvore do profile.
Métricas principais
Nível de consulta
-
Métricas de resumo
Metric
Description
Total
Tempo total decorrido da consulta, incluindo o tempo gasto nas fases Planning, Executing e Profiling.
QueryCpuCost
Tempo acumulado de cpu consumido pela consulta. Este valor é a soma do tempo de cpu de todos os processos simultâneos, portanto pode exceder o tempo real de execução.
QueryMemCost
Memória total consumida pela consulta.
Variables
Variáveis associadas à consulta.
-
Nível de pipeline
Metric
Description
ActiveTime
Tempo de execução do driver.
DriverTotalTime
Tempo total consumido pelo driver.
PendingTime
Tempo que o driver aguarda suas entradas e pré-requisitos.
Nível de operator
-
Métricas gerais de operator
Metric
Description
OperatorTotalTime
Tempo total de execução do operator.
PushRowNum
Total de linhas geradas pelo operator.
PullRowNum
Total de linhas recebidas pelo operator.
PullChunkNum
Total de chunks recebidos pelo operator.
PushChunkNum
Total de chunks gerados pelo operator.
PeakMemoryUsage
Pico de uso de memória do operator.
-
OLAP Scan Operator
Metric
Description
Table
Nome da tabela.
ScanTime
Tempo total gasto em operações de scan, realizadas em um pool de threads de I/O assíncrono.
TabletCount
Número de tablets verificados.
PushdownPredicates
Quantidade de predicados aplicados via pushdown.
BytesRead
Volume de dados lidos.
CompressedBytesRead
Volume de dados compactados lidos.
IOTime
Tempo total de I/O.
BitmapIndexFilterRows
Número de linhas filtradas por índices bitmap.
BloomFilterFilterRows
Número de linhas filtradas pelo filtro Bloom.
SegmentRuntimeZoneMapFilterRows
Número de linhas filtradas pelo zone map em tempo de execução.
SegmentZoneMapFilterRows
Número de linhas filtradas pelo zone map.
ShortKeyFilterRows
Número de linhas filtradas pela short key.
ZoneMapIndexFilterRows
Número de linhas filtradas pelo índice zone map.
-
Connector Scan Operator
Estas métricas complementam as do OLAP Scan Operator e aplicam-se a instâncias que utilizam separação de computação e armazenamento.
Metric
Description
CompressedBytesReadLocalDisk
Volume de dados compactados lidos do cache local no nó de computação.
CompressedBytesReadRemote
Quantidade total de dados compactados lidos do oss.
IOTimeLocalDisk
Tempo gasto em operações de I/O ao ler dados do cache local.
IOTimeRemote
Tempo gasto em operações de I/O ao ler dados do oss.
-
Exchange Operator
-
Sink
Metric
Description
PartType
Modo de distribuição de dados. Valores válidos:
UNPARTITIONED,RANDOM,HASH_PARTITIONEDeBUCKET_SHUFFLE_HASH_PARTITIONED.BytesSent
Volume de dados enviados.
OverallThroughput
Throughput geral de transferência de dados.
NetworkTime
Tempo gasto transmitindo pacotes, excluindo o tempo de processamento pós-recepção.
WaitTime
Tempo de espera devido à fila cheia no lado do remetente.
NetworkBandwidth
Largura de banda de rede calculada durante a transferência de dados.
-
Source
Metric
Description
SenderWaitLockTime
Tempo total em que o remetente aguardou um lock.
BytesReceived
Volume de dados recebidos.
DecompressChunkTime
Tempo total gasto descompactando chunks de dados.
DeserializeChunkTime
Tempo total gasto desserializando chunks de dados.
SenderTotalTime
Tempo total gasto pelo remetente.
-
-
Aggregate Operator
Metric
Description
GroupingKeys
Colunas utilizadas na cláusula GROUP BY.
AggregateFunctions
Funções de agregação aplicadas.
AggComputeTime
Tempo gasto computando funções de agregação.
ExprComputeTime
Tempo gasto computando expressões.
HashTableSize
Tamanho da tabela hash usada para agregação.
-
Join Operator
-
Probe
Metric
Description
DistributionMode
Modo de distribuição de dados.
JoinType
Tipo de join.
OtherJoinConjunctEvaluateTime
Tempo gasto avaliando outras conjunções do join.
ProbeConjunctEvaluateTime
Tempo gasto avaliando conjunções de probe.
SearchHashTableTime
Tempo gasto pesquisando na tabela hash.
WhereConjunctEvaluateTime
Tempo gasto avaliando conjunções WHERE.
-
Build
Metric
Description
JoinPredicates
Predicados usados na condição de join.
JoinType
Tipo de join.
BuildBuckets
Número de buckets na tabela hash do join.
BuildHashTableTime
Tempo gasto construindo a tabela hash para o join.
RuntimeFilterBuildTime
Tempo gasto construindo o filtro em tempo de execução.
RuntimeFilterNum
Quantidade de filtros em tempo de execução.
DistributionMode
Modo de distribuição de dados.
-
-
Window Function Operator
Metric
Description
ComputeTime
Tempo gasto computando funções de janela.
PartitionKeys
Chaves usadas para particionar a janela.
AggregateFunctions
Funções de agregação aplicadas.
-
Sort Operator
Metric
Description
SortKeys
Chaves de ordenação.
SortType
Método de ordenação utilizado, como ordenação completa ou top-N.
MergingTime
Tempo gasto mesclando execuções de dados ordenados.
SortingTime
Tempo gasto ordenando dados.
-
TableFunction Operator
Metric
Description
TableFunctionExecTime
Tempo gasto computando a função de tabela.
TableFunctionExecCount
Número de vezes que a função de tabela foi executada.
-
Project Operator
Metric
Description
ExprComputeTime
Tempo gasto computando expressões.
CommonSubExprComputeTime
Tempo gasto computando subexpressões comuns.
-
LocalExchange Operator
Metric
Description
Type
Tipo de troca local. Valores válidos:
Passthrough,PartitioneBroadcast.ShuffleNum
Número de shuffles. Esta métrica aplica-se apenas quando
TypeéPartition.