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

Описание

Хранит метаданные и статистику о выполненных запросах, такие как время начала, длительность, сообщения об ошибках, использование ресурсов и другие сведения о выполнении. Результаты запросов не сохраняются. Вы можете изменить настройки логирования запросов в разделе query_log конфигурации сервера. Вы можете отключить логирование запросов, установив log_queries = 0. Мы не рекомендуем отключать логирование, поскольку информация в этой таблице важна для устранения проблем. Период сброса данных задаётся параметром flush_interval_milliseconds в разделе настроек сервера query_log. Чтобы принудительно выполнить сброс, используйте запрос SYSTEM FLUSH LOGS. ClickHouse не удаляет данные из таблицы автоматически. Подробнее см. в разделе Introduction. Таблица system.query_log регистрирует два типа запросов:
  1. Начальные запросы (верхнего уровня).
  2. Дочерние запросы, инициированные другими запросами, включая запросы для распределённого выполнения и внутренние подзапросы, например при вычислении представлений. Для этих запросов информация об исходном начальном запросе отображается в столбцах initial_*.
По умолчанию фильтруйте начальные запросыКак правило, добавляйте is_initial_query = 1 при каждом запросе к system.query_log. Это исключает дочерние запросы, чтобы отдельные этапы обработки не учитывались отдельно от начального запроса. Этот фильтр не означает, что запрос был отправлен клиентом, поскольку внутренняя работа сервера также может быть начальным запросом.Вместо этого используйте initial_query_id, когда нужно отследить начальный запрос вместе с дочерними запросами, сохраняющими его ID. У начального запроса значения initial_query_id и query_id совпадают, тогда как дочерние запросы в той же цепочке сохраняют initial_query_id начального запроса и имеют собственный query_id. Не вся работа, порождённая начальным запросом, коррелируется таким образом: работа, запускаемая сервером, может начать новую цепочку начального запроса с новым initial_query_id, как при удалённом запуске QueryRunner.
Если коррелированные дочерние запросы могут выполняться на других узлах, запрашивайте system.query_log на каждом узле, например с помощью clusterAllReplicas.
Каждый запрос создаёт одну или две строки в таблице query_log в зависимости от состояния запроса (см. столбец type):
  1. Если запрос выполнен успешно, создаются две строки с типами QueryStart и QueryFinish.
  2. Если во время обработки запроса произошла ошибка, создаются два события с типами QueryStart и ExceptionWhileProcessing.
  3. Если ошибка произошла до запуска запроса, создаётся одно событие с типом ExceptionBeforeStart.
Вы можете использовать настройку log_queries_probability, чтобы уменьшить количество запросов, регистрируемых в таблице query_log. Вы можете использовать настройку log_formatted_queries, чтобы записывать отформатированные запросы в столбец formatted_query.

Столбцы

  • hostname (LowCardinality(String)) — имя хоста сервера, выполняющего запрос.
  • type (Enum8(‘QueryStart’ = 1, ‘QueryFinish’ = 2, ‘ExceptionBeforeStart’ = 3, ‘ExceptionWhileProcessing’ = 4)) — Тип события, произошедшего при выполнении запроса. Значения: QueryStart — успешное начало выполнения запроса, QueryFinish — успешное завершение выполнения запроса, ExceptionBeforeStart — исключение до начала выполнения запроса, ExceptionWhileProcessing — исключение в процессе выполнения запроса.
  • event_date (Date) — дата начала запроса.
  • event_time (DateTime) — Время начала выполнения запроса.
  • event_time_microseconds (DateTime64(6)) — время начала запроса с точностью до микросекунд.
  • query_start_time (DateTime) — время начала выполнения запроса.
  • query_start_time_microseconds (DateTime64(6)) — время начала выполнения запроса с точностью до микросекунд.
  • query_duration_ms (UInt64) — длительность выполнения запроса в миллисекундах.
  • read_rows (UInt64) — Общее количество строк, прочитанных из всех таблиц и табличных функций, участвовавших в запросе. Сюда входят обычные подзапросы, а также подзапросы для IN и JOIN. Для распределённых запросов read_rows включает общее количество строк, прочитанных на всех репликах. Каждая реплика отправляет своё значение read_rows, а сервер-инициатор запроса суммирует все полученные и локальные значения. Объёмы кэша не влияют на это значение.
  • read_bytes (UInt64) — Общее количество байтов, прочитанных из всех таблиц и табличных функций, использованных в запросе. Сюда входят обычные подзапросы, а также подзапросы для IN и JOIN. Для распределённых запросов read_bytes включает общее количество строк, прочитанных на всех репликах. Каждая реплика отправляет своё значение read_bytes, а сервер-инициатор запроса суммирует все полученные и локальные значения. Объём кэша не влияет на это значение.
  • written_rows (UInt64) — Количество строк, записанных запросом, включая строки, записанные последующими вставками, вызванными конвейером, например в attached materialized view. Для синхронной вставки эти последующие строки записываются в запись с query_kind = Insert; для асинхронной вставки они записываются в запись с query_kind = AsyncInsertFlush, тогда как клиентская запись Insert фиксирует только строки, принятые от клиента. Для запросов, не записывающих строки, значение равно 0.
  • written_bytes (UInt64) — Количество байтов, записанных запросом (без сжатия), включая байты, записанные последующими вставками, вызванными конвейером, например в attached materialized view. Для синхронной вставки эти последующие байты записываются в запись с query_kind = Insert; для асинхронной вставки они записываются в запись с query_kind = AsyncInsertFlush, тогда как клиентская запись Insert фиксирует только байты, принятые от клиента. Для запросов, не выполняющих запись данных, значение равно 0.
  • result_rows (UInt64) — Количество строк в результате запроса SELECT или количество строк, записанных при вставке. Для синхронной вставки сюда входят строки, записанные последующими вставками, вызванными конвейером (например, в attached materialized view), в записи с query_kind = Insert; для асинхронной вставки эти последующие строки записываются в запись с query_kind = AsyncInsertFlush, тогда как клиентская запись Insert фиксирует только строки, принятые от клиента.
  • result_bytes (UInt64) — объём оперативной памяти в байтах, используемый для хранения результата запроса.
  • memory_usage (UInt64) — Объём памяти, потребляемой запросом.
  • current_database (LowCardinality(String)) — Имя текущей базы данных.
  • query (String) — Строка запроса.
  • formatted_query (String) — Форматированный текст запроса.
  • normalized_query_hash (UInt64) — Числовое хеш-значение, идентичное для запросов, различающихся только значениями литералов.
  • query_kind (LowCardinality(String)) — Тип запроса.
  • databases (Array(LowCardinality(String))) — Названия баз данных, присутствующих в запросе.
  • tables (Array(LowCardinality(String))) — Имена таблиц, используемых в запросе.
  • columns (Array(LowCardinality(String))) — Имена столбцов, используемых в запросе.
  • partitions (Array(LowCardinality(String))) — Имена партиций, используемых в запросе.
  • projections (Array(LowCardinality(String))) — Имена проекций, используемых при выполнении запроса.
  • views (Array(LowCardinality(String))) — Имена (материализованных или live-) представлений, используемых в запросе.
  • exception_code (Int32) — Код исключения.
  • exception (String) — Сообщение исключения.
  • stack_trace (String) — Трассировка стека. Пустая строка, если запрос завершился успешно.
  • is_initial_query (UInt8) — Является ли запрос исходным. Возможные значения: 1 — исходный (верхнеуровневый) запрос, 0 — дочерний запрос, инициированный другим запросом, включая запросы для распределённого выполнения и внутренние подзапросы.
  • connection_address (IPv6) — IP-адрес клиента, с которого было установлено соединение. При подключении через прокси здесь будет указан адрес прокси-сервера.
  • connection_port (UInt16) — Порт клиента, с которого было установлено соединение. При подключении через прокси это будет порт прокси-сервера.
  • user (LowCardinality(String)) — Имя пользователя, инициировавшего текущий запрос.
  • query_id (String) — идентификатор запроса.
  • address (IPv6) — IP-адрес, использованный для выполнения запроса. При подключении через прокси и включённом параметре auth_use_forwarded_address здесь будет указан адрес клиента, а не прокси.
  • port (UInt16) — Порт клиента, который использовался для выполнения запроса. При подключении через прокси и включённом параметре auth_use_forwarded_address здесь будет указан порт клиента, а не прокси.
  • initial_user (LowCardinality(String)) — Имя пользователя, выполнившего исходный запрос в той же цепочке запросов.
  • initial_query_id (String) — идентификатор исходного запроса в той же цепочке запросов.
  • initial_address (IPv6) — IP-адрес, с которого был запущен исходный запрос в той же цепочке запросов.
  • initial_port (UInt16) — Клиентский порт, с которого был запущен исходный запрос в той же цепочке запросов.
  • initial_query_start_time (DateTime) — Время начала исходного запроса в той же цепочке запросов.
  • initial_query_start_time_microseconds (DateTime64(6)) — Время начала исходного запроса с точностью до микросекунд в той же цепочке запросов.
  • authenticated_user (LowCardinality(String)) — Имя пользователя, аутентифицированного в этом сеансе.
  • interface (UInt8) — Интерфейс, через который был отправлен запрос. Возможные значения: 1 — TCP, 2 — HTTP.
  • is_secure (UInt8) — Флаг, показывающий, был ли запрос выполнен через защищённый интерфейс
  • os_user (LowCardinality(String)) — имя пользователя операционной системы, от имени которого запущен clickhouse-client.
  • client_hostname (LowCardinality(String)) — имя хоста клиентской машины, на которой запущен clickhouse-client или другой TCP-клиент.
  • client_name (LowCardinality(String)) — имя clickhouse-client или другого TCP-клиента.
  • client_agent (LowCardinality(String)) — ИИ-агент для написания кода, который вызвал клиент (например, claude-code или cursor) и был определён по переменным окружения. Если агент не обнаружен, значение пустое.
  • client_revision (UInt32) — Ревизия clickhouse-client или другого TCP-клиента.
  • client_version_major (UInt32) — старшая версия clickhouse-client или другого TCP-клиента.
  • client_version_minor (UInt32) — младшая версия clickhouse-client или другого TCP-клиента.
  • client_version_patch (UInt32) — номер патча в версии clickhouse-client или другого TCP-клиента.
  • script_query_number (UInt32) — Номер запроса в скрипте, содержащем несколько запросов, для clickhouse-client.
  • script_line_number (UInt32) — Номер строки, с которой начинается запрос в скрипте с несколькими запросами в clickhouse-client.
  • http_method (UInt8) — HTTP-метод, которым был инициирован запрос. Возможные значения: 0 - запрос был выполнен через интерфейс TCP, 1 - использовался метод GET, 2 - использовался метод POST, 4 - использовался метод PUT, 5 - использовался метод DELETE, 6 - использовался метод HEAD.
  • http_user_agent (LowCardinality(String)) — HTTP-заголовок UserAgent, передаваемый в HTTP-запросе.
  • http_referer (String) — HTTP-заголовок Referer, передаваемый в HTTP-запросе (содержит полный или частичный адрес страницы, с которой выполняется запрос).
  • forwarded_for (String) — HTTP-заголовок X-Forwarded-For, передаваемый с HTTP-запросом.
  • quota_key (String) — Ключ квоты, указанный в параметре quotas (см. keyed).
  • distributed_depth (UInt64) — Сколько раз запрос пересылался между серверами.
  • revision (UInt32) — номер ревизии ClickHouse.
  • http_handler_name (String) — Имя определённого в SQL HTTP-обработчика (CREATE HANDLER), который вызвал запрос. Пустое значение, если запрос был вызван не через такой обработчик.
  • http_request_url (String) — Путь HTTP-запроса (без строки запроса), который вызвал запрос. Строка запроса не сохраняется, чтобы конфиденциальные параметры запроса не были сохранены. Пустое значение для запросов не по HTTP.
  • log_comment (String) — Комментарий к журналу. Может быть задан в виде произвольной строки длиной не более max_query_size. Если не определён, содержит пустую строку.
  • thread_ids (Array(UInt64)) — Идентификаторы потоков, участвующих в выполнении запроса. Эти потоки могли выполняться не одновременно.
  • peak_threads_usage (UInt64) — Максимальное число потоков, одновременно выполняющих запрос.
  • ProfileEvents (Map(LowCardinality(String), UInt64)) — события ProfileEvents, измеряющие различные метрики. Их описание можно найти в таблице system.events
  • Settings (Map(LowCardinality(String), LowCardinality(String))) — Настройки, изменённые при выполнении запроса клиентом. Чтобы включить логирование изменений настроек, установите параметр log_query_settings в значение 1.
  • used_aggregate_functions (Array(LowCardinality(String))) — Канонические имена агрегатных функций, использованных при выполнении запроса.
  • used_aggregate_function_combinators (Array(LowCardinality(String))) — Канонические имена комбинаторов агрегатных функций, использованных при выполнении запроса.
  • used_database_engines (Array(LowCardinality(String))) — Канонические имена движков баз данных, использовавшихся при выполнении запроса.
  • used_data_type_families (Array(LowCardinality(String))) — Канонические названия семейств типов данных, использовавшихся при выполнении запроса.
  • used_dictionaries (Array(LowCardinality(String))) — Канонические имена словарей, использованных при выполнении запроса.
  • used_formats (Array(LowCardinality(String))) — Канонические имена форматов, которые использовались при выполнении запроса.
  • used_functions (Array(LowCardinality(String))) — Канонические имена функций, использованных при выполнении запроса.
  • used_storages (Array(LowCardinality(String))) — Канонические имена хранилищ, использовавшихся при выполнении запроса.
  • used_table_functions (Array(LowCardinality(String))) — Канонические имена табличных функций, использованных при выполнении запроса.
  • used_executable_user_defined_functions (Array(LowCardinality(String))) — Канонические имена исполняемых пользовательских функций, использованных при выполнении запроса.
  • used_sql_user_defined_functions (Array(LowCardinality(String))) — Канонические имена пользовательских функций SQL, использованных при выполнении запроса.
  • used_row_policies (Array(LowCardinality(String))) — Список имён политик доступа на уровне строк, использованных при выполнении запроса.
  • used_privileges (Array(LowCardinality(String))) — привилегии, которые успешно прошли проверку при выполнении запроса.
  • missing_privileges (Array(LowCardinality(String))) — Отсутствующие привилегии при выполнении запроса.
  • transaction_id (Tuple(UInt64, UInt64, UUID)) — Идентификатор транзакции, в рамках которой был выполнен этот запрос.
  • query_cache_usage (Enum8(‘Unknown’ = 0, ‘None’ = 1, ‘Write’ = 2, ‘Read’ = 3)) — Использование кэша запросов при выполнении запроса. Значения: ‘Unknown’ = Статус неизвестен, ‘None’ = Результат запроса не был ни записан в кэш результатов запросов, ни прочитан из него, ‘Write’ = Результат запроса был записан в кэш результатов запросов, ‘Read’ = Результат запроса был прочитан из кэша результатов запросов.
  • asynchronous_read_counters (Map(LowCardinality(String), UInt64)) — метрики асинхронного чтения.
  • is_internal (UInt8) — Указывает, является ли это внутренним вспомогательным запросом.
Псевдонимы:
  • ProfileEvents.Names — псевдоним для mapKeys(ProfileEvents).
  • ProfileEvents.Values — псевдоним для mapValues(ProfileEvents).
  • Settings.Names — псевдоним для mapKeys(Settings).
  • Settings.Values — псевдоним для mapValues(Settings).

Примеры

Базовый пример
Пример для Cloud В ClickHouse Cloud таблица system.query_log локальна для каждого узла; чтобы увидеть все записи, необходимо выполнять запрос через clusterAllReplicas. Например, чтобы агрегировать строки из query_log со всех реплик кластера “default”, можно написать:

См. также

  • system.query_thread_log — Эта table содержит информацию о каждом потоке выполнения запроса.
Последнее изменение 15 августа 2026 г.