system.query_log
Данные в этой системной таблице хранятся локально на каждом узле в ClickHouse Cloud. Поэтому для получения полного обзора всех данных требуется функция clusterAllReplicas. Подробности см. здесь.
Описание
Хранит метаданные и статистику о выполненных запросах: время начала, длительность, сообщения об ошибках, использование ресурсов и другие детали выполнения. Эта таблица не хранит результаты запросов.
Вы можете изменить настройки логирования запросов в разделе конфигурации сервера query_log.
Вы можете отключить логирование запросов, установив log_queries = 0. Мы не рекомендуем отключать логирование, так как информация в этой таблице важна для устранения неполадок.
Период сброса данных задаётся параметром flush_interval_milliseconds в разделе настроек сервера query_log. Чтобы принудительно выполнить сброс, используйте запрос SYSTEM FLUSH LOGS.
ClickHouse не удаляет данные из этой таблицы автоматически. См. раздел Introduction для получения дополнительной информации.
Таблица system.query_log регистрирует два типа запросов:
- Первичные запросы, которые были запущены непосредственно клиентом.
- Дочерние запросы, которые были инициированы другими запросами (для распределённого выполнения запросов). Для таких запросов информация о родительских запросах отображается в столбцах
initial_*.
Каждый запрос создаёт одну или две строки в таблице query_log в зависимости от статуса запроса (см. столбец type):
- Если выполнение запроса прошло успешно, создаются две строки с типами
QueryStartиQueryFinish. - Если при обработке запроса произошла ошибка, создаются два события с типами
QueryStartиExceptionWhileProcessing. - Если ошибка произошла до запуска запроса, создаётся одно событие с типом
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) — Для запросов INSERT — число записанных строк. Для других запросов значение столбца равно 0.written_bytes(UInt64) — Для запросов INSERT — количество записанных байтов (без сжатия). Для остальных запросов значение столбца равно 0.result_rows(UInt64) — количество строк в результате SELECT-запроса или в 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)) — Имя пользователя OS, под которым запускается clickhouse-client.client_hostname(LowCardinality(String)) — имя хоста клиентской машины, на которой запущенclickhouse-clientили другой TCP-клиент.client_name(LowCardinality(String)) — имяclickhouse-clientили другого TCP-клиента.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.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.log_comment(String) — Комментарий к журналу. Можно задать произвольную строку длиной не более max_query_size. Если не определён, используется пустая строка.thread_ids(Array(UInt64)) — Идентификаторы потоков, участвующих в выполнении запроса. Эти потоки могли выполняться не одновременно друг с другом.peak_threads_usage(UInt64) — Максимальное количество одновременно выполняющих запрос потоков.ProfileEvents(Map(LowCardinality(String), UInt64)) — события профиля, измеряющие различные метрики. Их описание можно найти в таблице system.eventsSettings(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).
Примеры
Простой пример
Пример для облака
В ClickHouse Cloud system.query_log локален для каждого узла; чтобы увидеть все записи, необходимо выполнять запрос через clusterAllReplicas.
Например, чтобы агрегировать строки query_log со всех реплик в кластере «default», можно выполнить:
См. также
- system.query_thread_log — Эта таблица содержит информацию о каждом потоке выполнения запроса.