Skip to main content
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 3 de julho de 2026