> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8a08bda2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Tabla del sistema que contiene trazas de pila recopiladas por el perfilador de consultas por muestreo.

# system.trace_log

<Info>
  **Consultas en ClickHouse Cloud**

  Los datos de esta tabla del sistema se almacenan localmente en cada nodo de ClickHouse Cloud. Por lo tanto, para obtener una vista completa de todos los datos, es necesario usar la función `clusterAllReplicas`. Consulta [aquí](/es/reference/system-tables/overview#system-tables-in-clickhouse-cloud) para más detalles.
</Info>

<div id="description">
  ## Descripción
</div>

Contiene trazas de pila recopiladas por el [perfilador de consultas por muestreo](/es/concepts/features/performance/troubleshoot/sampling-query-profiler).

ClickHouse crea esta tabla cuando está definida la sección de configuración del servidor [trace\_log](/es/reference/settings/server-settings/settings#trace_log). Consulte también estas opciones de configuración: [query\_profiler\_real\_time\_period\_ns](/es/reference/settings/session-settings#query_profiler_real_time_period_ns), [query\_profiler\_cpu\_time\_period\_ns](/es/reference/settings/session-settings#query_profiler_cpu_time_period_ns), [memory\_profiler\_step](/es/reference/settings/session-settings#memory_profiler_step),
[memory\_profiler\_sample\_probability](/es/reference/settings/session-settings#memory_profiler_sample_probability), [trace\_profile\_events](/es/reference/settings/session-settings#trace_profile_events).

Para analizar logs, use las funciones de introspección `addressToLine`, `addressToLineWithInlines`, `addressToSymbol` y `demangle`.

<div id="columns">
  ## Columnas
</div>

* `hostname` ([LowCardinality(String)](/es/reference/data-types/lowcardinality)) — Nombre de host del servidor que ejecuta la consulta.
* `event_date` ([Date](/es/reference/data-types/date)) — Fecha en que se realizó el muestreo.
* `event_time` ([DateTime](/es/reference/data-types/datetime)) — Marca temporal del momento en que se realizó el muestreo.
* `event_time_microseconds` ([DateTime64(6)](/es/reference/data-types/datetime64)) — Marca temporal del momento del muestreo con precisión de microsegundos.
* `timestamp_ns` ([UInt64](/es/reference/data-types/int-uint)) — Marca temporal del instante de muestreo en nanosegundos.
* `revision` ([UInt32](/es/reference/data-types/int-uint)) — revisión de compilación del servidor ClickHouse. Al conectarse al servidor mediante `clickhouse-client`, verá una cadena similar a `Connected to ClickHouse server version 19.18.1.`. Este campo contiene la `revision`, pero no la `version` del servidor.
* `trace_type` ([Enum8('Real' = 0, 'CPU' = 1, 'Memory' = 2, 'MemorySample' = 3, 'MemoryPeak' = 4, 'ProfileEvent' = 5, 'JemallocSample' = 6, 'MemoryAllocatedWithoutCheck' = 7, 'Instrumentation' = 8)](/es/reference/data-types/enum)) — Tipo de traza: `Real` representa la recopilación de trazas de pila por tiempo de reloj. `CPU` representa la recopilación de trazas de pila por tiempo de CPU. `Memory` representa la recopilación de asignaciones y liberaciones de memoria cuando la asignación de memoria supera la siguiente marca de agua. `MemorySample` representa la recopilación de asignaciones y liberaciones de memoria aleatorias. `MemoryPeak` representa la recopilación de actualizaciones del uso máximo de memoria. `ProfileEvent` representa la recopilación de incrementos de eventos de perfil. `JemallocSample` representa la recopilación de muestras de jemalloc. `MemoryAllocatedWithoutCheck` representa la recopilación de asignaciones significativas (>16MiB) que se realiza ignorando cualquier límite de memoria (solo para desarrolladores de ClickHouse).`Instrumentation` representa las trazas recopiladas mediante la instrumentación realizada a través de XRay.
* `cpu_id` ([UInt64](/es/reference/data-types/int-uint)) — identificador de la CPU.
* `thread_id` ([UInt64](/es/reference/data-types/int-uint)) — Identificador de hilo.
* `thread_name` ([LowCardinality(String)](/es/reference/data-types/lowcardinality)) — Nombre del hilo.
* `query_id` ([String](/es/reference/data-types/string)) — Identificador de consulta que puede usarse para obtener detalles sobre una consulta que estaba en ejecución a partir de la tabla del sistema query\_log.
* `trace` ([Array(UInt64)](/es/reference/data-types/array)) — Traza de pila en el momento del muestreo. Cada elemento es una dirección de memoria virtual dentro del proceso del servidor de ClickHouse.
* `size` ([Int64](/es/reference/data-types/int-uint)) — Para los tipos de traza Memory, MemorySample, MemoryAllocatedWithoutCheck o MemoryPeak, indica la cantidad de memoria asignada; para los demás tipos de traza, es 0.
* `ptr` ([UInt64](/es/reference/data-types/int-uint)) — La dirección del fragmento asignado.
* `memory_context` ([Enum8('Unknown' = -1, 'Global' = 0, 'User' = 1, 'Process' = 2, 'Thread' = 3, 'Max' = 4)](/es/reference/data-types/enum)) — Contexto del rastreador de memoria (solo para Memory/MemoryPeak): el contexto `Unknown` no está definido para este tipo de traza. `Global` representa el contexto del servidor. `User` representa el contexto de usuario/merge. `Process` representa el contexto del proceso (es decir, de la consulta). `Thread` representa el contexto del hilo (el hilo de un proceso concreto). `Max` es un valor especial que significa que el rastreador de memoria no está bloqueado (para la columna blocked\_context).
* `memory_blocked_context` ([Enum8('Unknown' = -1, 'Global' = 0, 'User' = 1, 'Process' = 2, 'Thread' = 3, 'Max' = 4)](/es/reference/data-types/enum)) — Contexto en el que el rastreador de memoria está bloqueado (solo para desarrolladores de ClickHouse): el contexto `Unknown` no está definido para este trace\_type. `Global` representa el contexto del servidor. `User` representa el contexto de usuario/merge. `Process` representa el contexto del proceso (es decir, de la consulta). `Thread` representa el contexto del hilo (el hilo de un proceso concreto). `Max` es un valor especial que significa que el rastreador de memoria no está bloqueado (para la columna blocked\_context).
* `event` ([LowCardinality(String)](/es/reference/data-types/lowcardinality)) — Para la traza de tipo ProfileEvent, es el nombre del evento de perfil actualizado; para los demás tipos de traza, es una cadena vacía.
* `increment` ([Int64](/es/reference/data-types/int-uint)) — Para el tipo de traza ProfileEvent, es la cantidad en que se incrementa el evento de perfil; para otros tipos de traza, es 0.
* `symbols` ([Array(LowCardinality(String))](/es/reference/data-types/array)) — Si la simbolización está habilitada, contiene nombres de símbolos demanglados, correspondientes al `trace`. La simbolización puede habilitarse o deshabilitarse en la opción `symbolize` de `trace_log` dentro del archivo de configuración del servidor.
* `lines` ([Array(LowCardinality(String))](/es/reference/data-types/array)) — Si la simbolización está activada, contiene cadenas con nombres de archivo y números de línea correspondientes a la `trace`.
* `function_id` ([Nullable(Int32)](/es/reference/data-types/nullable)) — Para el tipo de trace Instrumentation, ID asignado a la función en la sección xray\_instr\_map del binario ELF.
* `function_name` ([Nullable(String)](/es/reference/data-types/nullable)) — Para las trazas de tipo Instrumentation, nombre de la función instrumentada.
* `handler` ([Nullable(String)](/es/reference/data-types/nullable)) — Para el tipo de traza Instrumentation, el handler de la función instrumentada.
* `entry_type` ([Nullable(Enum8('Entry' = 0, 'Exit' = 1))](/es/reference/data-types/nullable)) — Para las trazas de tipo Instrumentation, indica si se trata de la entrada o salida de la función instrumentada.
* `duration_nanoseconds` ([Nullable(UInt64)](/es/reference/data-types/nullable)) — Para el tipo de trace Instrumentation, tiempo durante el cual la función estuvo en ejecución, en nanosegundos.

**Alias:**

* `build_id` — Alias de `'E2EEB60ED9503BFFA825B628D480CCDC40B2D416'`.

La simbolización puede habilitarse o deshabilitarse en `symbolize`, dentro de `trace_log`, en el archivo de configuración del servidor.

<div id="example">
  ## Ejemplo
</div>

```sql theme={null}
SELECT * FROM system.trace_log LIMIT 1 \G
```

```text theme={null}
Row 1:
──────
hostname:                clickhouse.eu-central1.internal
event_date:              2025-11-11
event_time:              2025-11-11 11:53:59
event_time_microseconds: 2025-11-11 11:53:59.128333
timestamp_ns:            1762862039128333000
revision:                54504
trace_type:              Instrumentation
cpu_id:                  19
thread_id:               3166432 -- 3,17 millones
query_id:                ef462508-e189-4ea2-b231-4489506728e8
trace:                   [350594916,447733712,447742095,447727324,447726659,221642873,450882315,451852359,451905441,451885554,512404306,512509092,612861767,612863269,612466367,612455825,137631896259267,137631896856768]
size:                    0
ptr:                     0
memory_context:          Unknown
memory_blocked_context:  Unknown
event:
increment:               0
symbols:                 ['StackTrace::StackTrace()','DB::InstrumentationManager::createTraceLogElement(DB::InstrumentationManager::InstrumentedPointInfo const&, XRayEntryType, std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l>>>) const','DB::InstrumentationManager::profile(XRayEntryType, DB::InstrumentationManager::InstrumentedPointInfo const&)','DB::InstrumentationManager::dispatchHandlerImpl(int, XRayEntryType)','DB::InstrumentationManager::dispatchHandler(int, XRayEntryType)','__xray_FunctionEntry','DB::QueryMetricLog::startQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l>>>, unsigned long)','DB::logQueryStart(std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l>>> const&, std::__1::shared_ptr<DB::Context> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, unsigned long, std::__1::shared_ptr<DB::IAST> const&, DB::QueryPipeline const&, DB::IInterpreter const*, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, bool)','DB::executeQueryImpl(char const*, char const*, std::__1::shared_ptr<DB::Context>, DB::QueryFlags, DB::QueryProcessingStage::Enum, std::__1::unique_ptr<DB::ReadBuffer, std::__1::default_delete<DB::ReadBuffer>>&, std::__1::shared_ptr<DB::IAST>&, std::__1::shared_ptr<DB::ImplicitTransactionControlExecutor>, std::__1::function<void ()>)','DB::executeQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::shared_ptr<DB::Context>, DB::QueryFlags, DB::QueryProcessingStage::Enum)','DB::TCPHandler::runImpl()','DB::TCPHandler::run()','Poco::Net::TCPServerConnection::start()','Poco::Net::TCPServerDispatcher::run()','Poco::PooledThread::run()','Poco::ThreadImpl::runnableEntry(void*)','start_thread','__clone3']
lines:                   ['./build/../src/Common/StackTrace.cpp:395','./src/Common/StackTrace.h:62','./contrib/llvm-project/libcxx/include/__memory/shared_ptr.h:738','./build/./src/Interpreters/InstrumentationManager.cpp:257','./build/./src/Interpreters/InstrumentationManager.cpp:225','/home/ubuntu/ClickHouse/ClickHouse/build/programs/clickhouse','./build/./src/Interpreters/QueryMetricLog.cpp:0','./contrib/llvm-project/libcxx/include/__memory/shared_ptr.h:667','./build/./src/Interpreters/executeQuery.cpp:0','./build/./src/Interpreters/executeQuery.cpp:0','./contrib/llvm-project/libcxx/include/__memory/shared_ptr.h:744','./contrib/llvm-project/libcxx/include/__memory/shared_ptr.h:583','./build/../base/poco/Net/src/TCPServerConnection.cpp:54','../contrib/llvm-project/libcxx/include/__memory/unique_ptr.h:80','./build/../base/poco/Foundation/src/ThreadPool.cpp:219','../base/poco/Foundation/include/Poco/AutoPtr.h:77','/home/ubuntu/ClickHouse/ClickHouse/build/programs/clickhouse','/home/ubuntu/ClickHouse/ClickHouse/build/programs/clickhouse']
function_id:             231255
function_name:           DB::QueryMetricLog::startQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000l>>>, unsigned long)
handler:                 profile
entry_type:              Exit
duration_nanoseconds:   58435
```

<div id="chrome-event-trace-format">
  ## Conversión al formato Event Trace de Chrome
</div>

Los datos de perfilado se pueden convertir al formato Event Trace de Chrome con la siguiente consulta. Guarde la consulta en un archivo `chrome_trace.sql`:

```sql theme={null}
WITH traces AS (
    SELECT * FROM system.trace_log
    WHERE event_date >= today() AND trace_type = 'Instrumentation' AND handler = 'profile'
    ORDER BY event_time, entry_type
)
SELECT
    format(
        '{{"traceEvents": [{}\n]}}',
        arrayStringConcat(
            groupArray(
                format(
                    '\n{{"name": "{}", "cat": "clickhouse", "ph": "{}", "ts": {}, "pid": 1, "tid": {}, "args": {{"query_id": "{}", "cpu_id": {}, "stack": [{}]}}}},',
                    function_name,
                    if(entry_type = 0, 'B', 'E'),
                    timestamp_ns/1000,
                    toString(thread_id),
                    query_id,
                    cpu_id,
                    arrayStringConcat(arrayMap((x, y) -> concat('"', x, ': ', y, '", '), lines, symbols))
                )
            )
        )
    )
FROM traces;
```

Y ejecútalo con ClickHouse Client para exportarlo a un archivo `trace.json` que luego puedes importar en [Perfetto](https://ui.perfetto.dev/) o [speedscope](https://www.speedscope.app/).

```bash theme={null}
echo $(clickhouse client --query "$(cat chrome_trace.sql)") > trace.json
```

Podemos omitir la parte de la pila si queremos una traza más compacta, aunque menos informativa.

<div id="see-also">
  ## Véase también
</div>

* [SYSTEM INSTRUMENT](/es/reference/statements/system#instrument) — Añade o elimina puntos de instrumentación.
* [system.instrumentation](/es/reference/system-tables/instrumentation) — Inspecciona los puntos instrumentados.
* [system.symbols](/es/reference/system-tables/symbols) — Inspecciona los símbolos para añadir puntos de instrumentación.
