Skip to main content
Skip to main content
Edit this page

Функции интроспекции

Функции из этого раздела могут использоваться для интроспекции ELF и DWARF в целях профилирования запросов.

Предупреждение

Эти функции выполняются медленно и могут приводить к нежелательным последствиям в плане безопасности.

Для правильной работы функций интроспекции:

Из соображений безопасности данные функции отключены по умолчанию.

ClickHouse сохраняет отчеты профилировщика в журнал трассировки в системной таблице. Убедитесь, что таблица и профилировщик настроены правильно.

addressToLine

Преобразует адрес виртуальной памяти внутри процесса сервера ClickHouse в имя файла и номер строки в исходном коде ClickHouse.

Если вы используете официальные пакеты ClickHouse, вам необходимо установить следующий пакеты: clickhouse-common-static-dbg.

Синтаксис

Аргументы

  • address_of_binary_instruction (Тип UInt64)- Адрес инструкции в запущенном процессе.

Возвращаемое значение

  • Имя файла исходного кода и номер строки в этом файле разделяются двоеточием.

    Например, /build/obj-x86_64-linux-gnu/../src/Common/ThreadPool.cpp:199, где 199 — номер строки.

  • Имя бинарного файла, если функция не может найти отладочную информацию.

  • Пустая строка, если адрес не является допустимым.

Тип: String.

Пример

Включение функций самоанализа:

Выбор первой строки из списка trace_log системная таблица:

То trace поле содержит трассировку стека в момент выборки.

Получение имени файла исходного кода и номера строки для одного адреса:

Применение функции ко всему стектрейсу:

Функция arrayMap позволяет обрабатывать каждый отдельный элемент массива trace с помощью функции addressToLine. Результат этой обработки вы видите в виде trace_source_code_lines колонки выходных данных.

addressToSymbol

Преобразует адрес виртуальной памяти внутри серверного процесса ClickHouse в символ из объектных файлов ClickHouse.

Синтаксис

Аргументы

  • address_of_binary_instruction (Тип uint64) — адрес инструкции в запущенном процессе.

Возвращаемое значение

  • Символ из объектных файлов ClickHouse.
  • Пустая строка, если адрес не является допустимым.

Тип: String.

Пример

Включение функций самоанализа:

Выбор первой строки из списка trace_log системная таблица:

То trace поле содержит трассировку стека в момент выборки.

Получение символа для одного адреса:

Применение функции ко всей трассировке стека:

То arrayMap функция позволяет обрабатывать каждый отдельный элемент системы. trace массив по типу addressToSymbols функция. Результат этой обработки вы видите в виде trace_symbols колонка выходных данных.

demangle

Преобразует символ, который вы можете получить с помощью addressstosymbol функция имя функции C++.

Синтаксис

Аргументы

  • symbol (Строка) - символ из объектного файла.

Возвращаемое значение

  • Имя функции C++.
  • Пустая строка, если символ не является допустимым.

Тип: Строка.

Пример

Включение функций самоанализа:

Выбор первой строки из списка trace_log системная таблица:

То trace поле содержит трассировку стека в момент выборки.

Получение имени функции для одного адреса:

Применение функции ко всему стектрейсу:

Функция arrayMap позволяет обрабатывать каждый отдельный элемент массива trace с помощью функции demangle.

tid

Возвращает id потока, в котором обрабатывается текущий Block.

Синтаксис

Возвращаемое значение

  • Id текущего потока. Uint64.

Пример

Запрос:

Результат:

logTrace

Выводит сообщение в лог сервера для каждого Block.

Синтаксис

Аргументы

  • message — сообщение, которое отправляется в серверный лог. String.

Возвращаемое значение

  • Всегда возвращает 0.

Пример

Запрос:

Результат: