Skip to main content

Описание

Показывает текущему пользователю записи из его журнала запросов. Читает таблицу журнала запросов, заданную настройками сервера query_log.database и query_log.table (по умолчанию — system.query_log), и возвращает только строки, в которых пользователь-инициатор равен currentUser() (если задан initial_user, используется он, иначе — user). В отличие от самой таблицы журнала запросов, system.user_query_log можно читать без каких-либо привилегий, поэтому пользователи могут просматривать собственные запросы, не получая доступа к запросам других пользователей. Это поддерживается только при локальном хранении журнала запросов. Если для query_log.engine задан Distributed или другой движок, который делегирует чтение другому серверу, system.user_query_log отказывается читать из такой таблицы и генерирует исключение, поскольку требуемую проверку доступа невозможно обеспечить через границу серверов, взаимодействующих по протоколу ClickHouse. В этом случае отключите таблицу, установив query_log.enable_user_query_log = 0. Доступность system.user_query_log присоединяется только тогда, когда включена настройка сервера query_log.enable_user_query_log, что является значением по умолчанию. Если настройка равна 0, таблица не существует, и запросы к ней завершаются ошибкой UNKNOWN_TABLE. Если query_log.enable_user_query_log включена, но базовый журнал запросов не настроен или его таблица ещё не создана, system.user_query_log существует, но пуста. Условия для партиции и столбцов ключа журнала запросов (event_date, event_time, query_start_time, query_id, type и аналогичных скалярных столбцов), сравниваемые с константами, передаются в базовую таблицу журнала запросов, поэтому при обычных обращениях, таких как в приведённом ниже примере, сохраняется отсечение партиций и не выполняется сканирование всего хранимого журнала. Если таблица с именем system.user_query_log была создана до обновления до версии ClickHouse, в которой появилась эта таблица, сервер не запустится, пока существующая таблица не будет переименована или удалена либо для query_log.enable_user_query_log не будет установлено значение 0.

Столбцы

  • hostname (String) — Имя хоста сервера, выполняющего запрос.
  • clickhouse_version (String) — Версия сервера ClickHouse, создавшего строку.
  • system_processor (String) — Архитектура процессора сервера ClickHouse, создавшего строку.
  • 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) — Количество строк, записанных запросом, включая строки, записанные последующими вставками, запускаемыми конвейером, например подключёнными materialized views. Для синхронной вставки эти последующие строки регистрируются в записи query_kind = Insert; для асинхронной вставки они регистрируются в записи query_kind = AsyncInsertFlush, тогда как запись Insert, видимая клиенту, содержит только строки, принятые от клиента. Для запросов, не записывающих строки, значение равно 0.
  • written_bytes (UInt64) — Количество байтов, записанных запросом (без сжатия), включая байты, записанные последующими вставками, запускаемыми конвейером, например подключёнными materialized views. Для синхронной вставки эти последующие байты регистрируются в записи query_kind = Insert; для асинхронной вставки они регистрируются в записи query_kind = AsyncInsertFlush, тогда как запись Insert, видимая клиенту, содержит только байты, принятые от клиента. Для запросов, не записывающих данные, значение равно 0.
  • result_rows (UInt64) — Количество строк в результате SELECT-запроса или количество строк, записанных вставкой. Для синхронной вставки сюда входят строки, записанные последующими вставками, запускаемыми конвейером (например, подключёнными materialized views), в записи query_kind = Insert; для асинхронной вставки эти последующие строки регистрируются в записи query_kind = AsyncInsertFlush, тогда как запись Insert, видимая клиенту, содержит только строки, принятые от клиента.
  • result_bytes (UInt64) — Объём оперативной памяти в байтах, используемый для хранения результата запроса.
  • memory_usage (UInt64) — Потребление памяти запросом.
  • current_database (String) — Имя текущей базы данных.
  • query (String) — Строка запроса.
  • formatted_query (String) — Форматированная строка запроса.
  • normalized_query_hash (UInt64) — Числовое хеш-значение, одинаковое, например, для запросов, различающихся только значениями литералов.
  • query_kind (String) — Тип запроса.
  • databases (Array(String)) — Имена баз данных, указанных в запросе.
  • tables (Array(String)) — Имена таблиц, указанных в запросе.
  • columns (Array(String)) — Имена столбцов, указанных в запросе.
  • partitions (Array(String)) — Имена партиций, указанных в запросе.
  • projections (Array(String)) — Имена проекций, использованных при выполнении запроса.
  • views (Array(String)) — Имена (материализованных или живых) представлений, указанных в запросе.
  • exception_code (Int32) — Код исключения.
  • exception (String) — Сообщение исключения.
  • stack_trace (String) — Трассировка стека. Пустая строка, если запрос успешно выполнен.
  • is_initial_query (UInt8) — Является ли запрос исходным. Возможные значения: 1 — исходный (верхнеуровневый) запрос, 0 — дочерний запрос, инициированный другим запросом, включая запросы для распределённого выполнения и внутренние подзапросы.
  • connection_address (IPv6) — IP-адрес клиента, с которого установлено соединение. При подключении через прокси это адрес прокси.
  • connection_port (UInt16) — Порт клиента, с которого установлено соединение. При подключении через прокси это порт прокси.
  • user (String) — Имя пользователя, инициировавшего текущий запрос.
  • query_id (String) — ID запроса.
  • address (IPv6) — IP-адрес, с которого выполнен запрос. При подключении через прокси и включённой настройке auth_use_forwarded_address это адрес клиента, а не прокси.
  • port (UInt16) — Порт клиента, с которого выполнен запрос. При подключении через прокси и включённой настройке auth_use_forwarded_address это порт клиента, а не прокси.
  • initial_user (String) — Имя пользователя, выполнившего исходный запрос в той же цепочке запросов.
  • initial_query_id (String) — ID исходного запроса в той же цепочке запросов.
  • initial_address (IPv6) — IP-адрес, с которого был запущен исходный запрос в той же цепочке запросов.
  • initial_port (UInt16) — Порт клиента, с которого был запущен исходный запрос в той же цепочке запросов.
  • initial_query_start_time (DateTime) — Время запуска исходного запроса в той же цепочке запросов.
  • initial_query_start_time_microseconds (DateTime64(6)) — Время запуска исходного запроса в той же цепочке запросов с точностью до микросекунд.
  • authenticated_user (String) — Имя пользователя, прошедшего аутентификацию в сеансе.
  • interface (Enum8(‘Unknown’ = 0, ‘TCP’ = 1, ‘HTTP’ = 2, ‘gRPC’ = 3, ‘MySQL’ = 4, ‘PostgreSQL’ = 5, ‘Local’ = 6, ‘TCP_Interserver’ = 7, ‘Prometheus’ = 8, ‘Background’ = 9, ‘ArrowFlight’ = 10)) — Интерфейс, через который был инициирован запрос, согласно данным клиента. Unknown, если указанный интерфейс не распознан этим сервером.
  • is_secure (UInt8) — Флаг, указывающий, был ли запрос выполнен через защищённый интерфейс
  • os_user (String) — Имя пользователя операционной системы, запускающего clickhouse-client.
  • client_hostname (String) — Имя хоста клиентской машины, на которой запущен clickhouse-client или другой TCP-клиент.
  • client_name (String) — Имя clickhouse-client или другого TCP-клиента.
  • client_agent (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 (Enum8(‘UNKNOWN’ = 0, ‘GET’ = 1, ‘POST’ = 2, ‘OPTIONS’ = 3, ‘PUT’ = 4, ‘DELETE’ = 5, ‘HEAD’ = 6)) — HTTP-метод, инициировавший запрос. UNKNOWN, если запрос поступил не по HTTP или если указанный метод не распознан этим сервером.
  • http_user_agent (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) — Комментарий Log. Его можно задать произвольной строкой длиной не более max_query_size. Если он не задан, возвращается пустая строка.
  • thread_ids (Array(UInt64)) — Идентификаторы потоков, участвующих в выполнении запроса. Эти потоки могли выполняться не одновременно.
  • peak_threads_usage (UInt64) — Максимальное количество потоков, одновременно выполняющих запрос.
  • ProfileEvents (Map(String, UInt64)) — ProfileEvents, отражающие различные метрики. Их описание приведено в таблице system.events
  • Settings (Map(String, String)) — Settings, изменённые при выполнении запроса клиентом. Чтобы включить журналирование изменений настроек, задайте параметру log_query_settings значение 1.
  • used_aggregate_functions (Array(String)) — Канонические имена агрегатных функций, использованных при выполнении запроса.
  • used_aggregate_function_combinators (Array(String)) — Канонические имена комбинаторов агрегатных функций, использованных при выполнении запроса.
  • used_database_engines (Array(String)) — Канонические имена движков баз данных, использованных при выполнении запроса.
  • used_data_type_families (Array(String)) — Канонические имена семейств типов данных, использованных при выполнении запроса.
  • used_dictionaries (Array(String)) — Канонические имена словарей, использованных при выполнении запроса.
  • used_formats (Array(String)) — Канонические имена форматов, использованных при выполнении запроса.
  • used_functions (Array(String)) — Канонические имена функций, использованных при выполнении запроса.
  • used_storages (Array(String)) — Канонические имена хранилищ, использованных при выполнении запроса.
  • used_table_functions (Array(String)) — Канонические имена табличных функций, использованных при выполнении запроса.
  • used_executable_user_defined_functions (Array(String)) — Канонические имена исполняемых пользовательских функций, использованных при выполнении запроса.
  • used_sql_user_defined_functions (Array(String)) — Канонические имена пользовательских функций SQL, использованных при выполнении запроса.
  • used_row_policies (Array(String)) — Список имён политик строк, использованных при выполнении запроса.
  • used_privileges (Array(String)) — Привилегии, успешно проверенные при выполнении запроса.
  • missing_privileges (Array(String)) — Привилегии, отсутствующие при выполнении запроса.
  • used_number_of_joins (UInt64) — Количество физических JOIN, выполненных для этого запроса. Значение собирается из конвейеров по мере их построения, поэтому отражает JOIN, оставшиеся после всех оптимизаций, а не количество предложений JOIN в тексте запроса. JOIN учитывается независимо от глубины вложенности: подзапросы, общие табличные выражения, представления, представления поверх представлений и SELECT materialized view, запускаемый INSERT, — всё это учитывается в строке отправленного запроса, поэтому значение может быть ненулевым даже для запроса, в тексте которого нет ни одного JOIN. Запрос, который строит конвейер, не выполняя его (например, EXPLAIN PIPELINE), возвращает количество JOIN анализируемого запроса. Некоторые конвейеры за время выполнения одного запроса собираются несколько раз: SELECT materialized view собирается для каждого блока запускающего его INSERT и каждым потоком вставки, рекурсивная часть рекурсивного CTE — на каждой итерации, а отношение цикла — заново при каждом перезапуске. Тем не менее JOIN такого конвейера учитываются только один раз, поэтому значение характеризует сам запрос, а не то, сколько раз собирались его конвейеры.
  • used_join_algorithms (Array(String)) — Алгоритмы JOIN, учтённых в used_number_of_joins: ‘HASH’, ‘PARALLEL_HASH’, ‘GRACE_HASH’, ‘PARTIAL_MERGE’, ‘FULL_SORTING_MERGE’, ‘PARALLEL_FULL_SORTING_MERGE’, ‘IE_JOIN’, ‘DIRECT’, ‘PASTE’ и ‘CONSTANT’; значения отсортированы и дедуплицированы, поэтому алгоритм, общий для нескольких JOIN, указывается один раз. Здесь указан алгоритм, фактически выбранный для выполнения каждого JOIN, а не алгоритмы, разрешённые настройкой join_algorithm. Алгоритм может смениться другим прямо в ходе выполнения — в этом случае указываются оба.
  • used_join_kinds (Array(String)) — Виды JOIN, учтённых в used_number_of_joins, по одному элементу на каждый JOIN, поэтому вид, общий для нескольких JOIN, указывается несколько раз. Элементы отсортированы, а не расположены в порядке выполнения. Для каждого JOIN указан фактически выполненный вид, который может отличаться от указанного в тексте запроса: оптимизатор может выполнить JOIN, поменяв стороны местами, и тем самым превратить LEFT в RIGHT.
  • used_join_strictness (Array(String)) — Строгость JOIN, учтённых в used_number_of_joins, по одному элементу на каждый JOIN, в том же порядке, что и в used_join_kinds: элемент с одним и тем же индексом в обоих массивах описывает один и тот же JOIN.
  • spilled_to_disk (Array(String)) — Операторы, записывавшие данные во временные файлы на диске (обработка во внешней памяти) при выполнении запроса; значения отсортированы и дедуплицированы. Пустой массив означает, что запрос был полностью выполнен в памяти.
  • transaction_id (Tuple(UInt64, UInt64, UUID, Int64)) — Идентификатор транзакции, в рамках которой был выполнен этот запрос.
  • query_cache_usage (Enum8(‘Unknown’ = 0, ‘None’ = 1, ‘Write’ = 2, ‘Read’ = 3)) — Использование кэша запросов при выполнении запроса. Значения: ‘Unknown’ = статус неизвестен, ‘None’ = результат запроса не был ни записан в кэш результатов запросов, ни прочитан из него, ‘Write’ = результат запроса был записан в кэш результатов запросов, ‘Read’ = результат запроса был прочитан из кэша результатов запросов.
  • asynchronous_read_counters (Map(String, UInt64)) — Метрики асинхронного чтения.
  • is_internal (UInt8) — Указывает, является ли запрос вспомогательным и выполняется ли он внутри системы.
Псевдонимы:
  • ProfileEvents.Names — псевдоним для mapKeys(ProfileEvents).
  • ProfileEvents.Values — псевдоним для mapValues(ProfileEvents).
  • Settings.Names — псевдоним для mapKeys(Settings).
  • Settings.Values — псевдоним для mapValues(Settings).

Пример

Последнее изменение 26 сентября 2026 г.