Pular para o conteúdo principal
Consultas no ClickHouse CloudOs dados nesta tabela de sistema são mantidos localmente em cada nó do ClickHouse Cloud. Portanto, para obter uma visão completa de todos os dados, é necessário usar a função clusterAllReplicas. Consulte aqui para mais detalhes.

Descrição

Contém stack traces coletados pelo profiler de consultas por amostragem. O ClickHouse cria esta tabela quando a seção de configuração do servidor trace_log é definida. Veja também as configurações: query_profiler_real_time_period_ns, query_profiler_cpu_time_period_ns, memory_profiler_step, memory_profiler_sample_probability, trace_profile_events. Para analisar logs, use as funções de introspecção addressToLine, addressToLineWithInlines, addressToSymbol e demangle.

Colunas

  • hostname (LowCardinality(String)) — Hostname do servidor que executa a consulta.
  • event_date (Date) — Data do momento em que a amostragem ocorreu.
  • event_time (DateTime) — Timestamp do momento da amostragem.
  • event_time_microseconds (DateTime64(6)) — Timestamp do momento da amostragem com precisão de microssegundos.
  • timestamp_ns (UInt64) — Timestamp do momento de amostragem em nanossegundos.
  • revision (UInt32) — revisão de compilação do servidor ClickHouse. Ao se conectar ao servidor com o clickhouse-client, você verá uma string semelhante a Connected to ClickHouse server version 19.18.1.. Este campo contém a revision, mas não a version de um servidor.
  • trace_type (Enum8(‘Real’ = 0, ‘CPU’ = 1, ‘Memory’ = 2, ‘MemorySample’ = 3, ‘MemoryPeak’ = 4, ‘ProfileEvent’ = 5, ‘JemallocSample’ = 6, ‘MemoryAllocatedWithoutCheck’ = 7, ‘Instrumentation’ = 8)) — Tipo de trace: Real representa a coleta de stack traces por tempo de relógio. CPU representa a coleta de stack traces por tempo de CPU. Memory representa a coleta de alocações e desalocações quando a alocação de memória excede a watermark subsequente. MemorySample representa a coleta aleatória de alocações e desalocações. MemoryPeak representa a coleta de atualizações do pico de uso de memória. ProfileEvent representa a coleta de incrementos de eventos de profile. JemallocSample representa a coleta de amostras do jemalloc. MemoryAllocatedWithoutCheck representa a coleta de alocações significativas (>16MiB), feita sem considerar quaisquer limites de memória (apenas para desenvolvedores do ClickHouse).Instrumentation representa traces coletados pela instrumentação realizada por meio do XRay.
  • cpu_id (UInt64) — identificador da CPU.
  • thread_id (UInt64) — Identificador da thread.
  • thread_name (LowCardinality(String)) — Nome da thread.
  • query_id (String) — Identificador da consulta que pode ser usado para obter detalhes sobre uma consulta que estava em execução a partir da tabela de sistema query_log.
  • trace (Array(UInt64)) — Stack trace no momento da amostragem. Cada elemento é um endereço de memória virtual no processo do servidor ClickHouse.
  • size (Int64) — Para os tipos de trace Memory, MemorySample, MemoryAllocatedWithoutCheck ou MemoryPeak, é a quantidade de memória alocada; para os demais tipos de trace, é 0.
  • ptr (UInt64) — O endereço do fragmento alocado.
  • memory_context (Enum8(‘Unknown’ = -1, ‘Global’ = 0, ‘User’ = 1, ‘Process’ = 2, ‘Thread’ = 3, ‘Max’ = 4)) — contexto do memory tracker (apenas para Memory/MemoryPeak): o contexto Unknown não está definido para este trace_type. Global representa o contexto do servidor. User representa o contexto do usuário/merge. Process representa o contexto do processo (ou seja, da consulta). Thread representa o contexto da thread (thread de um processo específico). Max é um valor especial que significa que o memory tracker não está bloqueado (para a coluna blocked_context).
  • memory_blocked_context (Enum8(‘Unknown’ = -1, ‘Global’ = 0, ‘User’ = 1, ‘Process’ = 2, ‘Thread’ = 3, ‘Max’ = 4)) — Contexto no qual o memory tracker está bloqueado (somente para desenvolvedores do ClickHouse): o contexto Unknown não está definido para este trace_type. Global representa o contexto do servidor. User representa o contexto de usuário/merge. Process representa o contexto do processo (ou seja, da consulta). Thread representa o contexto da thread (thread de um processo específico). Max é um valor especial que significa que o memory tracker não está bloqueado (para a coluna blocked_context).
  • event (LowCardinality(String)) — Para o tipo de trace ProfileEvent, é o nome do evento de perfil atualizado; para os outros tipos de trace, é uma string vazia.
  • increment (Int64) — Para traces do tipo ProfileEvent, é o valor do incremento do evento de profile; para outros tipos de trace, é 0.
  • symbols (Array(LowCardinality(String))) — Se a simbolização estiver habilitada, contém nomes de símbolos desmanglados, correspondentes ao trace. A simbolização pode ser habilitada ou desabilitada pela configuração symbolize, em trace_log, no arquivo de configuração do servidor.
  • lines (Array(LowCardinality(String))) — Se a simbolização estiver habilitada, contém strings com nomes de arquivos e números de linha correspondentes ao trace.
  • function_id (Nullable(Int32)) — Para o trace do tipo Instrumentation, ID atribuído à função na seção xray_instr_map do binário ELF.
  • function_name (Nullable(String)) — Para o trace do tipo Instrumentation, nome da função instrumentada.
  • handler (Nullable(String)) — Para o trace do tipo Instrumentation, handler da função instrumentada.
  • entry_type (Nullable(Enum8(‘Entry’ = 0, ‘Exit’ = 1))) — Para o tipo de trace Instrumentation, indica se é a entrada ou a saída da função instrumentada.
  • duration_nanoseconds (Nullable(UInt64)) — Para o tipo de trace Instrumentation, tempo de execução da função, em nanossegundos.
Aliases:
  • build_id — Alias de 'E2EEB60ED9503BFFA825B628D480CCDC40B2D416'.
A simbolização pode ser ativada ou desativada em symbolize, em trace_log, no arquivo de configuração do servidor.

Exemplo

Convertendo para o Chrome Event Trace Format

Os dados de profiling podem ser convertidos para o Chrome Event Trace Format com a consulta a seguir. Salve a consulta em um arquivo chrome_trace.sql:
E executá-lo com o ClickHouse Client para exportá-lo para um arquivo trace.json, que podemos importar no Perfetto ou no speedscope.
Podemos omitir a pilha de chamadas se quisermos um trace mais compacto, mas menos informativo.

Veja também

Última modificação em 1 de julho de 2026