Consultas en ClickHouse CloudLos 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í para más detalles.Descripción
symbols y lines, por lo que puede analizar los logs directamente sin funciones de introspección. La opción de configuración symbolize se aplica a los tipos de trazas recopiladas por el perfilador; las filas con el tipo de traza Instrumentation se simbolizan independientemente de esta opción. La simbolización es compatible con plataformas ELF (como Linux) y macOS; en FreeBSD, las columnas symbols y lines siempre están vacías. Los nombres de función en symbols proceden de la tabla de símbolos del binario y están disponibles de forma predeterminada, mientras que las ubicaciones de origen en lines se obtienen según disponibilidad: requieren información de depuración (un paquete .dSYM en macOS) y, en plataformas ELF, solo se resuelven para los marcos dentro del binario principal de ClickHouse; los marcos no resueltos tienen entradas lines vacías.
Si la simbolización está deshabilitada o desea resolver sobre la marcha las direcciones sin procesar de la columna trace (por ejemplo, para expandir marcos inline), use las funciones de introspección addressToLine, addressToLineWithInlines, addressToSymbol y demangle. Estas funciones están disponibles en las mismas plataformas que la simbolización (plataformas ELF como Linux y macOS); en FreeBSD tampoco están compiladas, por lo que las direcciones de trace deben resolverse fuera del servidor.
Columnas
hostname(LowCardinality(String)) — Nombre de host del servidor que ejecuta la consulta.event_date(Date) — Fecha en que se realizó el muestreo.event_time(DateTime) — Marca temporal del momento en que se realizó el muestreo.event_time_microseconds(DateTime64(6)) — Marca temporal del momento del muestreo con precisión de microsegundos.timestamp_ns(UInt64) — Marca temporal del instante de muestreo en nanosegundos.revision(UInt32) — revisión de compilación del servidor ClickHouse. Al conectarse al servidor medianteclickhouse-client, verá una cadena similar aConnected to ClickHouse server version 19.18.1.. Este campo contiene larevision, pero no laversiondel servidor.trace_type(Enum8(‘Real’ = 0, ‘CPU’ = 1, ‘Memory’ = 2, ‘MemorySample’ = 3, ‘MemoryPeak’ = 4, ‘ProfileEvent’ = 5, ‘JemallocSample’ = 6, ‘MemoryAllocatedWithoutCheck’ = 7, ‘Instrumentation’ = 8)) — Tipo de traza:Realrepresenta la recopilación de trazas de pila por tiempo de reloj.CPUrepresenta la recopilación de trazas de pila por tiempo de CPU.Memoryrepresenta la recopilación de asignaciones y liberaciones de memoria cuando la asignación de memoria supera la siguiente marca de agua.MemorySamplerepresenta la recopilación de asignaciones y liberaciones de memoria aleatorias.MemoryPeakrepresenta la recopilación de actualizaciones del uso máximo de memoria.ProfileEventrepresenta la recopilación de incrementos de eventos de perfil.JemallocSamplerepresenta la recopilación de muestras de jemalloc.MemoryAllocatedWithoutCheckrepresenta la recopilación de asignaciones significativas (>16MiB) que se realiza ignorando cualquier límite de memoria (solo para desarrolladores de ClickHouse).Instrumentationrepresenta las trazas recopiladas mediante la instrumentación realizada a través de XRay.cpu_id(UInt64) — identificador de la CPU.thread_id(UInt64) — Identificador de hilo.thread_name(LowCardinality(String)) — Nombre del hilo.query_id(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)) — Traza de pila en el momento del muestreo. Para los tipos de traza recopilados por el generador de perfiles, en plataformas ELF excepto FreeBSD, las direcciones del binario principal de ClickHouse se almacenan como desplazamientos físicos dentro del archivo, y las demás direcciones son direcciones de memoria virtual dentro del proceso del servidor de ClickHouse. Las filas de trazas de instrumentación son una excepción: almacenan direcciones de memoria virtual sin procesar.size(Int64) — 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) — La dirección del fragmento asignado.memory_context(Enum8(‘Unknown’ = -1, ‘Global’ = 0, ‘User’ = 1, ‘Process’ = 2, ‘Thread’ = 3, ‘Max’ = 4)) — Contexto del rastreador de memoria (solo para Memory/MemoryPeak): el contextoUnknownno está definido para este tipo de traza.Globalrepresenta el contexto del servidor.Userrepresenta el contexto de usuario/merge.Processrepresenta el contexto del proceso (es decir, de la consulta).Threadrepresenta el contexto del hilo (el hilo de un proceso concreto).Maxes 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)) — Contexto en el que el rastreador de memoria está bloqueado (solo para desarrolladores de ClickHouse): el contextoUnknownno está definido para este trace_type.Globalrepresenta el contexto del servidor.Userrepresenta el contexto de usuario/merge.Processrepresenta el contexto del proceso (es decir, de la consulta).Threadrepresenta el contexto del hilo (el hilo de un proceso concreto).Maxes un valor especial que significa que el rastreador de memoria no está bloqueado (para la columna blocked_context).event(LowCardinality(String)) — 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) — 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))) — Si la simbolización está habilitada, contiene nombres de símbolos demanglados, correspondientes altrace. La simbolización puede habilitarse o deshabilitarse en la opciónsymbolizedetrace_logdentro del archivo de configuración del servidor; la opción se aplica a los tipos de traza recopilados por el profiler, mientras que las filas con el tipo de trazaInstrumentationse simbolizan independientemente de ella. La simbolización es compatible con plataformas ELF (como Linux) y macOS; en FreeBSD esta columna siempre está vacía.lines(Array(LowCardinality(String))) — Si la simbolización está activada, contiene cadenas con nombres de archivo y números de línea correspondientes a latrace. La opciónsymbolizese aplica a los tipos de traza recopilados por el profiler, mientras que las filas con el tipo de trazaInstrumentationse simbolizan independientemente de ella. La simbolización es compatible con plataformas ELF (como Linux) y macOS; en FreeBSD esta columna siempre está vacía. Las ubicaciones de origen se proporcionan en la medida de lo posible: requieren información de depuración (un paquete.dSYMen macOS) y, en plataformas ELF, solo se resuelven para los marcos dentro del binario principal de ClickHouse; los marcos no resueltos tienen entradas vacías.function_id(Nullable(Int32)) — 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)) — Para las trazas de tipo Instrumentation, nombre de la función instrumentada.handler(Nullable(String)) — Para el tipo de traza Instrumentation, el handler de la función instrumentada.entry_type(Nullable(Enum8(‘Entry’ = 0, ‘Exit’ = 1))) — Para las trazas de tipo Instrumentation, indica si se trata de la entrada o salida de la función instrumentada.duration_nanoseconds(Nullable(UInt64)) — Para el tipo de trace Instrumentation, tiempo durante el cual la función estuvo en ejecución, en nanosegundos.
build_id— Alias del ID de compilación del binario del servidor ClickHouse en ejecución.
symbolize de trace_log en el archivo de configuración del servidor. Está activada de forma predeterminada. Esta configuración se aplica a los tipos de traza recopilados por el perfilador; las filas con el tipo de traza Instrumentation se simbolizan independientemente de esta configuración.
Ejemplo
Conversión al formato Event Trace de Chrome
chrome_trace.sql:
trace.json que luego puedes importar en Perfetto o speedscope.
Véase también
- SYSTEM INSTRUMENT — Añade o elimina puntos de instrumentación.
- system.instrumentation — Inspecciona los puntos instrumentados.
- system.symbols — Inspecciona los símbolos para añadir puntos de instrumentación.