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— Исключение во время выполнения запроса.
event_date(Date) — Дата начала запроса.event_time(DateTime) — Время начала запроса.event_time_microseconds(DateTime64) — время начала запроса с точностью до микросекунд.query_start_time(DateTime) — время начала выполнения запроса.query_start_time_microseconds(DateTime64) — время начала выполнения запроса с микросекундной точностью.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(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(String) — Имена проекций, использованных при выполнении запроса.views(Array(LowCardinality(String))) — Имена материализованных или живых представлений (Live View), используемых в запросе.exception_code(Int32) — Код исключения.exception(String) — сообщение об исключении.stack_trace(String) — трассировка стека. Пустая строка, если запрос был успешно выполнен.is_initial_query(UInt8) — Тип запроса. Возможные значения:- 1 — Запрос был инициирован клиентом.
- 0 — Запрос был инициирован другим запросом в рамках выполнения распределённого запроса.
user(String) — Имя пользователя, который инициировал текущий запрос.query_id(String) — идентификатор запроса.address(IPv6) — IP-адрес, с которого был выполнен запрос.port(UInt16) — Порт клиента, использованный для выполнения запроса.initial_user(String) — Имя пользователя, который выполнил исходный запрос (при распределённом выполнении запросов).initial_query_id(String) — идентификатор исходного запроса (для распределённого выполнения запросов).initial_address(IPv6) — IP-адрес, с которого был инициирован родительский запрос.initial_port(UInt16) — клиентский порт, который использовался при выполнении родительского запроса.initial_query_start_time(DateTime) — Время начала исходного запроса (для распределённого выполнения запроса).initial_query_start_time_microseconds(DateTime64) — Время начала исходного запроса с точностью до микросекунд (при распределённом выполнении запросов).interface(UInt8) — Интерфейс, через который был инициирован запрос. Возможные значения:- 1 — TCP.
- 2 — HTTP.
os_user(String) — Имя пользователя операционной системы, от имени которого запускается clickhouse-client.client_hostname(String) — имя хоста клиентской машины, на которой запущен clickhouse-client или другой TCP‑клиент.client_name(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(String) — HTTP-заголовокUser-Agent, переданный в HTTP-запросе.http_referer(String) — HTTP-заголовокReferer, переданный в HTTP-запросе (содержит абсолютный или частичный адрес страницы, отправляющей запрос).forwarded_for(String) — HTTP-заголовокX-Forwarded-For, переданный в HTTP-запросе.quota_key(String) — «ключ квоты», указанный в настройке quotas (см.keyed).revision(UInt32) — ревизия ClickHouse.ProfileEvents(Map(String, UInt64)) — события ProfileEvents, которые измеряют различные метрики. Их описание приведено в таблице system.eventsSettings(Map(String, String)) — настройки, которые были изменены при выполнении запроса клиентом. Чтобы включить логирование изменений настроек, установите значение параметраlog_query_settingsравным 1.log_comment(String) — комментарий для лога. Может быть установлен в произвольную строку длиной не более max_query_size. Пустая строка, если не задан.thread_ids(Array(UInt64)) — Идентификаторы потоков, участвующих в выполнении запроса. Эти потоки могли выполняться не параллельно.`peak_threads_usage(UInt64)) — максимальное число потоков, одновременно выполняющих запрос.used_aggregate_functions(Array(String)) — Канонические именаaggregate functions, использованных при выполнении запроса.used_aggregate_function_combinators(Array(String)) — канонические имена комбинаторов агрегатных функций, использованных при выполнении запроса.used_database_engines(Array(String)) — Канонические именадвижков баз данных, использованных при выполнении запроса.used_data_type_families(Array(String)) — Канонические имена семейств типов данных, которые использовались во время выполнения запроса.used_dictionaries(Array(String)) — канонические именаdictionaries, которые были использованы при выполнении запроса. Для словарей, настроенных с использованием XML-файла, это имя словаря, а для словарей, созданных с помощью SQL-оператора, каноническим именем является полное квалифицированное имя объекта.used_formats(Array(String)) — Канонические названияformats, которые были использованы во время выполнения запроса.used_functions(Array(String)) — канонические имена функций, использованных при выполнении запроса.used_storages(Array(String)) — канонические имена хранилищ (storages), которые использовались при выполнении запроса.used_table_functions(Array(String)) — Канонические именаtable functions, использованных при выполнении запроса.used_executable_user_defined_functions(Array(String)) — Канонические именаexecutable user defined functions, которые были использованы при выполнении запроса.used_sql_user_defined_functions(Array(String)) — Канонические имена пользовательских SQL-функций, которые были использованы во время выполнения запроса.used_privileges(Array(String)) - Права доступа, которые были успешно проверены при выполнении запроса.missing_privileges(Array(String)) — Недостающие привилегии при выполнении запроса.query_cache_usage(Enum8) — использование кэша запросов при выполнении запроса. Значения:'Unknown'= Статус неизвестен.'None'= Результат запроса не был ни записан в кэш запросов, ни прочитан из него.'Write'= Результат запроса был записан в кэш запросов.'Read'= Результат запроса был прочитан из кэша запросов.
Примеры
Простой пример
Пример для облака
В ClickHouse Cloud system.query_log локален для каждого узла; чтобы увидеть все записи, необходимо выполнять запрос через clusterAllReplicas.
Например, чтобы агрегировать строки query_log со всех реплик в кластере «default», можно выполнить:
См. также
- system.query_thread_log — Эта таблица содержит информацию о каждом потоке выполнения запроса.