system.processors_profile_log
Запросы в ClickHouse Cloud
Данные в этой системной таблице хранятся локально на каждом узле в ClickHouse Cloud. Для получения полного представления о всех данных необходимо использовать функцию clusterAllReplicas. Подробности см. здесь.
Эта таблица содержит профилирование на уровне процессоров (которое вы можете найти в EXPLAIN PIPELINE).
Столбцы:
hostname(LowCardinality(String)) — Имя хоста сервера, выполняющего запрос.event_date(Date) — Дата, когда произошло событие.event_time(DateTime) — Дата и время, когда произошло событие.event_time_microseconds(DateTime64) — Дата и время с точностью до микросекунд, когда произошло событие.id(UInt64) — ID процессораparent_ids(Array(UInt64)) — ID родительских процессоровplan_step(UInt64) — ID шага плана запроса, который создал этот процессор. Значение равно нулю, если процессор не был добавлен с какого-либо шага.plan_group(UInt64) — Группа процессора, если она была создана шагом плана запроса. Группа представляет собой логическую разбивку процессоров, добавленных с одного и того же шага плана запроса. Группа используется только для улучшения внешнего вида результата EXPLAIN PIPELINE.initial_query_id(String) — ID исходного запроса (для выполнения распределенного запроса).query_id(String) — ID запроса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) — Количество байтов, сгенерированных процессором. Пример
Запрос:
Результат:
Здесь вы можете увидеть:
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.
См. также