Перейти к основному содержанию
Запросы в ClickHouse CloudДанные в этой системной таблице хранятся локально на каждом узле ClickHouse Cloud. Поэтому, чтобы получить полное представление обо всех данных, требуется функция clusterAllReplicas. Дополнительные сведения см. здесь.

Описание

Содержит трассировки стека, собранные выборочным профилировщиком запросов. ClickHouse создает эту таблицу, когда настроен раздел конфигурации сервера trace_log. См. также настройки: query_profiler_real_time_period_ns, query_profiler_cpu_time_period_ns, memory_profiler_step, memory_profiler_sample_probability, trace_profile_events. Для анализа журналов используйте функции интроспекции addressToLine, addressToLineWithInlines, addressToSymbol и demangle.

Столбцы

  • hostname (LowCardinality(String)) — Имя хоста сервера, выполняющего запрос.
  • event_date (Date) — Дата сэмплирования.
  • event_time (DateTime) — временная метка момента сэмплирования.
  • event_time_microseconds (DateTime64(6)) — Временная метка момента сэмплирования с точностью до микросекунд.
  • timestamp_ns (UInt64) — временная метка момента сэмплирования в наносекундах.
  • revision (UInt32) — ревизия сборки сервера ClickHouse. При подключении к серверу с помощью clickhouse-client вы видите строку вида Connected to ClickHouse server version 19.18.1.. Это поле содержит revision, а не version сервера.
  • trace_type (Enum8(‘Real’ = 0, ‘CPU’ = 1, ‘Memory’ = 2, ‘MemorySample’ = 3, ‘MemoryPeak’ = 4, ‘ProfileEvent’ = 5, ‘JemallocSample’ = 6, ‘MemoryAllocatedWithoutCheck’ = 7, ‘Instrumentation’ = 8)) — Тип трассировки: Real означает сбор трассировок стека по астрономическому времени. CPU означает сбор трассировок стека по времени CPU. Memory означает сбор событий выделения и освобождения памяти, когда её выделение превышает следующую водяную метку. MemorySample означает сбор случайных событий выделения и освобождения памяти. MemoryPeak означает сбор обновлений пикового потребления памяти. ProfileEvent означает сбор приращений profile events. JemallocSample означает сбор сэмплов jemalloc. MemoryAllocatedWithoutCheck означает сбор значительных выделений памяти (>16MiB), который выполняется без учёта каких-либо ограничений памяти (только для разработчиков ClickHouse).Instrumentation означает трассы, собранные с помощью инструментирования через XRay.
  • cpu_id (UInt64) — идентификатор процессора.
  • thread_id (UInt64) — идентификатор потока.
  • thread_name (LowCardinality(String)) — имя потока.
  • query_id (String) — идентификатор запроса, который можно использовать для получения сведений о выполнявшемся запросе из системной таблицы query_log.
  • trace (Array(UInt64)) — трассировка стека на момент сэмплирования. Каждый элемент — виртуальный адрес памяти в процессе сервера ClickHouse.
  • size (Int64) — для типов trace Memory, MemorySample, MemoryAllocatedWithoutCheck и MemoryPeak это объём выделенной памяти, для остальных типов trace — 0.
  • ptr (UInt64) — адрес выделенного фрагмента.
  • memory_context (Enum8(‘Unknown’ = -1, ‘Global’ = 0, ‘User’ = 1, ‘Process’ = 2, ‘Thread’ = 3, ‘Max’ = 4)) — контекст трекера памяти (только для Memory/MemoryPeak): контекст Unknown не определён для данного trace_type. Global обозначает контекст сервера. User обозначает контекст пользователя или слияния. Process обозначает контекст процесса (то есть запроса). Thread обозначает контекст потока (потока конкретного процесса). Max — это специальное значение, которое означает, что трекер памяти не заблокирован (для столбца blocked_context).
  • memory_blocked_context (Enum8(‘Unknown’ = -1, ‘Global’ = 0, ‘User’ = 1, ‘Process’ = 2, ‘Thread’ = 3, ‘Max’ = 4)) — Контекст, для которого заблокирован трекер памяти (только для разработчиков ClickHouse): контекст Unknown не определён для этого trace_type. Global обозначает контекст сервера. User обозначает контекст пользователя/слияния. Process обозначает контекст процесса (то есть запроса). Thread обозначает контекст потока (потока конкретного процесса). Max — специальное значение, которое означает, что трекер памяти не заблокирован (для столбца blocked_context).
  • event (LowCardinality(String)) — Для типа trace ProfileEvent это имя обновлённого события профиля, для других типов trace это пустая строка.
  • increment (Int64) — для трассировки типа ProfileEvent это величина приращения события профиля, для остальных типов трассировки — 0.
  • symbols (Array(LowCardinality(String))) — Если символизация включена, содержит деманглированные имена символов, соответствующие trace. Символизацию можно включить или отключить с помощью настройки symbolize в разделе trace_log файла конфигурации сервера.
  • lines (Array(LowCardinality(String))) — Если символизация включена, содержит строки с именами файлов и номерами строк, соответствующими trace.
  • function_id (Nullable(Int32)) — Для типа trace Instrumentation — идентификатор, присвоенный функции в разделе xray_instr_map ELF-бинарного файла.
  • function_name (Nullable(String)) — Для Instrumentation типа trace — имя функции, в которую добавлена инструментация.
  • handler (Nullable(String)) — Для трассировок типа Instrumentation — обработчик функции с инструментированием.
  • entry_type (Nullable(Enum8(‘Entry’ = 0, ‘Exit’ = 1))) — Для трассы типа Instrumentation: тип Entry/Exit инструментируемой функции.
  • duration_nanoseconds (Nullable(UInt64)) — для trace-типа Instrumentation: время выполнения функции в наносекундах.
Псевдонимы:
  • build_id — псевдоним для 'E2EEB60ED9503BFFA825B628D480CCDC40B2D416'.
Символизацию можно включить или отключить с помощью параметра symbolize в разделе trace_log файла конфигурации сервера.

Пример

Преобразование в формат трассировки событий Chrome

Данные профилирования можно преобразовать в формат трассировки событий Chrome с помощью следующего запроса. Сохраните запрос в файл chrome_trace.sql:
И выполнить его в клиенте ClickHouse, чтобы экспортировать в файл trace.json, который затем можно импортировать либо в Perfetto, либо в speedscope.
Мы можем опустить часть со стеком, если нужна более компактная, но менее информативная трассировка.

См. также

  • SYSTEM INSTRUMENT — Добавить или удалить точки инструментирования.
  • system.instrumentation — Просмотреть инструментированные точки.
  • system.symbols — Просмотреть символы для добавления точек инструментирования.
Последнее изменение 2 июля 2026 г.