Перейти к основному содержимому
Перейти к основному содержимому

system.query_log

Выполнение запросов в 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_*.

Каждый запрос создаёт одну или две строки в таблице 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) — Для запросов 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.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).

Примеры

Простой пример

SELECT * FROM system.query_log WHERE type = 'QueryFinish' ORDER BY query_start_time DESC LIMIT 1 FORMAT Vertical;
Row 1:
──────
hostname:                              clickhouse.eu-central1.internal
type:                                  QueryFinish
event_date:                            2021-11-03
event_time:                            2021-11-03 16:13:54
event_time_microseconds:               2021-11-03 16:13:54.953024
query_start_time:                      2021-11-03 16:13:54
query_start_time_microseconds:         2021-11-03 16:13:54.952325
query_duration_ms:                     0
read_rows:                             69
read_bytes:                            6187
written_rows:                          0
written_bytes:                         0
result_rows:                           69
result_bytes:                          48256
memory_usage:                          0
current_database:                      default
query:                                 DESCRIBE TABLE system.query_log
formatted_query:
normalized_query_hash:                 8274064835331539124
query_kind:
databases:                             []
tables:                                []
columns:                               []
projections:                           []
views:                                 []
exception_code:                        0
exception:
stack_trace:
is_initial_query:                      1
user:                                  default
query_id:                              7c28bbbb-753b-4eba-98b1-efcbe2b9bdf6
address:                               ::ffff:127.0.0.1
port:                                  40452
initial_user:                          default
initial_query_id:                      7c28bbbb-753b-4eba-98b1-efcbe2b9bdf6
initial_address:                       ::ffff:127.0.0.1
initial_port:                          40452
initial_query_start_time:              2021-11-03 16:13:54
initial_query_start_time_microseconds: 2021-11-03 16:13:54.952325
interface:                             1
os_user:                               sevirov
client_hostname:                       clickhouse.eu-central1.internal
client_name:                           ClickHouse
client_revision:                       54449
client_version_major:                  21
client_version_minor:                  10
client_version_patch:                  1
http_method:                           0
http_user_agent:
http_referer:
forwarded_for:
quota_key:
revision:                              54456
log_comment:
thread_ids:                            [30776,31174]
ProfileEvents:                         {'Query':1,'NetworkSendElapsedMicroseconds':59,'NetworkSendBytes':2643,'SelectedRows':69,'SelectedBytes':6187,'ContextLock':9,'RWLockAcquiredReadLocks':1,'RealTimeMicroseconds':817,'UserTimeMicroseconds':427,'SystemTimeMicroseconds':212,'OSCPUVirtualTimeMicroseconds':639,'OSReadChars':894,'OSWriteChars':319}
Settings:                              {'load_balancing':'random','max_memory_usage':'10000000000'}
used_aggregate_functions:              []
used_aggregate_function_combinators:   []
used_database_engines:                 []
used_data_type_families:               []
used_dictionaries:                     []
used_formats:                          []
used_functions:                        []
used_storages:                         []
used_table_functions:                  []
used_executable_user_defined_functions:[]
used_sql_user_defined_functions:       []
used_privileges:                       []
missing_privileges:                    []
query_cache_usage:                     None

Пример для облака

В ClickHouse Cloud system.query_log локален для каждого узла; чтобы увидеть все записи, необходимо выполнять запрос через clusterAllReplicas.

Например, чтобы агрегировать строки query_log со всех реплик в кластере «default», можно выполнить:

SELECT * 
FROM clusterAllReplicas('default', system.query_log)
WHERE event_time >= now() - toIntervalHour(1)
LIMIT 10
SETTINGS skip_unavailable_shards = 1;

См. также

  • system.query_thread_log — Эта таблица содержит информацию о каждом потоке выполнения запроса.