system.processors_profile_log
Выполнение запросов в ClickHouse Cloud
Данные в этой системной таблице хранятся локально на каждом узле в ClickHouse Cloud. Поэтому для получения полного обзора всех данных требуется функция clusterAllReplicas. Подробности см. здесь.
Описание
Эта таблица содержит профилирующие данные на уровне процессоров (которые можно увидеть в EXPLAIN PIPELINE).
Столбцы
hostname(LowCardinality(String)) — Имя хоста сервера, выполняющего запрос.event_date(Date) — Дата, когда произошло событие.event_time(DateTime) — Дата и время, когда произошло событие.event_time_microseconds(DateTime64(6)) — Дата и время с точностью до микросекунд, когда произошло событие.id(UInt64) — Идентификатор процессора.parent_ids(Array(UInt64)) — Идентификаторы родительских процессоров.plan_step(UInt64) — Идентификатор шага плана запроса, создавшего этот процессор. Значение равно нулю, если процессор не был добавлен ни на одном шаге.plan_step_name(String) — Имя шага плана запроса, создавшего этот процессор. Значение пустое, если процессор не был добавлен ни на одном шаге.plan_step_description(String) — Описание шага плана запроса, создавшего этот процессор. Значение пустое, если процессор не был добавлен ни на одном шаге.plan_group(UInt64) — Группа процессора, если он был создан шагом плана запроса. Группа — это логическое разбиение процессоров, добавленных одним и тем же шагом плана запроса. Используется только для более наглядного отображения результата EXPLAIN PIPELINE.initial_query_id(String) — Идентификатор исходного запроса (для распределённого выполнения запроса).query_id(String) — Идентификатор запроса.name(LowCardinality(String)) — Имя процессора.elapsed_us(UInt64) — Количество микросекунд, в течение которых выполнялся этот процессор.input_wait_elapsed_us(UInt64) — Количество микросекунд, в течение которых этот процессор ожидал данных (от другого процессора).output_wait_elapsed_us(UInt64) — Количество микросекунд, в течение которых этот процессор ожидал, потому что выходной порт был заполнен.input_rows(UInt64) — Количество строк, обработанных процессором.input_bytes(UInt64) — Количество байтов, обработанных процессором.output_rows(UInt64) — Количество строк, созданных процессором.output_bytes(UInt64) — Количество байтов, созданных процессором.processor_uniq_id(String) — Уникальный идентификатор процессора в конвейере.step_uniq_id(String) — Уникальный идентификатор шага в плане.
Пример
Запрос:
Результат:
Здесь видно, что:
ExpressionTransformвыполнял функциюsleep(1), поэтому выполнение егоworkзаймет 1e6 мкс, и, следовательно,elapsed_us> 1e6.SourceFromSingleChunkдолжен ждать, потому чтоExpressionTransformне принимает данные во время выполненияsleep(1), поэтому он будет в состоянииPortFullв течение 1e6 мкс, и, следовательно,output_wait_elapsed_us> 1e6.LimitsCheckingTransform/NullSource/LazyOutputFormatдолжны ждать, покаExpressionTransformвыполнитsleep(1), чтобы обработать результат, поэтомуinput_wait_elapsed_us> 1e6.