Skip to main content
Запросы в 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. Когда символизация включена (по умолчанию), деманглированные имена функций и местоположения в исходном коде уже доступны в столбцах symbols и lines, поэтому журналы можно анализировать напрямую без функций интроспекции. Настройка symbolize применяется к типам трассировок, собранным профилировщиком; строки с типом трассировки Instrumentation символизируются независимо от этой настройки. Символизация поддерживается на платформах ELF (таких как Linux) и macOS; в FreeBSD столбцы symbols и lines всегда пусты. Имена функций в symbols берутся из таблицы символов бинарного файла и доступны по умолчанию, а местоположения в исходном коде в lines определяются по мере возможности: для них требуется отладочная информация (пакет .dSYM в macOS), а на платформах ELF они определяются только для кадров внутри основного бинарного файла ClickHouse; для неразрешенных кадров записи lines пусты. Если символизация отключена или вы хотите определить необработанные адреса в столбце trace на лету (например, чтобы раскрыть inline-кадры), используйте функции интроспекции addressToLine, addressToLineWithInlines, addressToSymbol и demangle. Эти функции доступны на тех же платформах, что и символизация (платформах ELF, таких как Linux, и macOS); в FreeBSD они также не скомпилированы, поэтому адреса в trace необходимо определять вне сервера.

Столбцы

  • 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)) — трассировка стека на момент сэмплирования. Для типов трассировок, собранных профилировщиком, на платформах ELF, кроме FreeBSD, адреса в основном бинарном файле ClickHouse хранятся как физические смещения в файле, а остальные адреса являются виртуальными адресами памяти в процессе сервера ClickHouse. Строки трассировки Instrumentation являются исключением: в них хранятся необработанные виртуальные адреса памяти.
  • 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 файла конфигурации сервера; настройка применяется к типам трассировок, собираемым профилировщиком, тогда как строки с типом трассировки Instrumentation символизируются независимо от неё. Символизация поддерживается на платформах ELF (таких как Linux) и macOS; на FreeBSD этот столбец всегда пуст.
  • lines (Array(LowCardinality(String))) — Если символизация включена, содержит строки с именами файлов и номерами строк, соответствующими trace. Настройка symbolize применяется к типам трассировок, собираемым профилировщиком, тогда как строки с типом трассировки Instrumentation символизируются независимо от неё. Символизация поддерживается на платформах ELF (таких как Linux) и macOS; на FreeBSD этот столбец всегда пуст. Местоположения в исходном коде определяются по возможности: для них требуется отладочная информация (пакет .dSYM в macOS), а на платформах ELF они определяются только для кадров внутри основного бинарного файла ClickHouse; для неразрешённых кадров записи пусты.
  • 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 — псевдоним для ID сборки бинарного файла работающего сервера ClickHouse.
Символизацию можно включить или отключить с помощью настройки symbolize в разделе trace_log файла конфигурации сервера. По умолчанию она включена. Эта настройка применяется к типам трассировки, собранным профилировщиком; строки с типом трассировки Instrumentation символизируются независимо от этой настройки.

Пример

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

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

См. также

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