> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> System table containing profiling information on the processors level (which can be found in `EXPLAIN PIPELINE`)

# system.processors_profile_log

<Info>
  **Querying in ClickHouse Cloud**

  The data in this system table is held locally on each node in ClickHouse Cloud. Obtaining a complete view of all data, therefore, requires the `clusterAllReplicas` function. See [here](/reference/system-tables/overview#system-tables-in-clickhouse-cloud) for further details.
</Info>

<h2 id="description">
  Description
</h2>

This table contains profiling on processors level (that you can find in [`EXPLAIN PIPELINE`](/reference/statements/explain#explain-pipeline)).

<h2 id="columns">
  Columns
</h2>

* `hostname` ([LowCardinality(String)](/reference/data-types/lowcardinality)) — Hostname of the server executing the query.
* `event_date` ([Date](/reference/data-types/date)) — The date when the event happened.
* `event_time` ([DateTime](/reference/data-types/datetime)) — The date and time when the event happened.
* `event_time_microseconds` ([DateTime64(6)](/reference/data-types/datetime64)) — The date and time with microseconds precision when the event happened.
* `id` ([UInt64](/reference/data-types/int-uint)) — ID of processor.
* `parent_ids` ([Array(UInt64)](/reference/data-types/array)) — Parent processors IDs.
* `plan_step` ([UInt64](/reference/data-types/int-uint)) — ID of the query plan step which created this processor. The value is zero if the processor was not added from any step.
* `plan_step_name` ([String](/reference/data-types/string)) — Name of the query plan step which created this processor. The value is empty if the processor was not added from any step.
* `plan_step_description` ([String](/reference/data-types/string)) — Description of the query plan step which created this processor. The value is empty if the processor was not added from any step.
* `plan_group` ([UInt64](/reference/data-types/int-uint)) — Group of the processor if it was created by query plan step. A group is a logical partitioning of processors added from the same query plan step. Group is used only for beautifying the result of EXPLAIN PIPELINE result.
* `initial_query_id` ([String](/reference/data-types/string)) — ID of the initial query (for distributed query execution).
* `query_id` ([String](/reference/data-types/string)) — ID of the query.
* `name` ([LowCardinality(String)](/reference/data-types/lowcardinality)) — Name of the processor.
* `elapsed_us` ([UInt64](/reference/data-types/int-uint)) — Number of microseconds this processor was executed.
* `input_wait_elapsed_us` ([UInt64](/reference/data-types/int-uint)) — Number of microseconds this processor was waiting for data (from other processor).
* `output_wait_elapsed_us` ([UInt64](/reference/data-types/int-uint)) — Number of microseconds this processor was waiting because output port was full.
* `input_rows` ([UInt64](/reference/data-types/int-uint)) — The number of rows consumed by processor.
* `input_bytes` ([UInt64](/reference/data-types/int-uint)) — The number of bytes consumed by processor.
* `output_rows` ([UInt64](/reference/data-types/int-uint)) — The number of rows generated by processor.
* `output_bytes` ([UInt64](/reference/data-types/int-uint)) — The number of bytes generated by processor.
* `processor_uniq_id` ([String](/reference/data-types/string)) — The uniq processor id in pipeline.
* `step_uniq_id` ([String](/reference/data-types/string)) — The uniq step id in plan.

<h2 id="example">
  Example
</h2>

```sql title="Query" theme={null}
EXPLAIN PIPELINE
SELECT sleep(1)
┌─explain─────────────────────────┐
│ (Expression)                    │
│ ExpressionTransform             │
│   (SettingQuotaAndLimits)       │
│     (ReadFromStorage)           │
│     SourceFromSingleChunk 0 → 1 │
└─────────────────────────────────┘

SELECT sleep(1)
SETTINGS log_processors_profiles = 1
Query id: feb5ed16-1c24-4227-aa54-78c02b3b27d4
┌─sleep(1)─┐
│        0 │
└──────────┘
1 rows in set. Elapsed: 1.018 sec.

SELECT
    name,
    elapsed_us,
    input_wait_elapsed_us,
    output_wait_elapsed_us
FROM system.processors_profile_log
WHERE query_id = 'feb5ed16-1c24-4227-aa54-78c02b3b27d4'
ORDER BY name ASC
```

```text title="Response" theme={null}
┌─name────────────────────┬─elapsed_us─┬─input_wait_elapsed_us─┬─output_wait_elapsed_us─┐
│ ExpressionTransform     │    1000497 │                  2823 │                    197 │
│ LazyOutputFormat        │         36 │               1002188 │                      0 │
│ LimitsCheckingTransform │         10 │               1002994 │                    106 │
│ NullSource              │          5 │               1002074 │                      0 │
│ NullSource              │          1 │               1002084 │                      0 │
│ SourceFromSingleChunk   │         45 │                  4736 │                1000819 │
└─────────────────────────┴────────────┴───────────────────────┴────────────────────────┘
```

Here you can see:

* `ExpressionTransform` was executing `sleep(1)` function, so it `work` will takes 1e6, and so `elapsed_us` > 1e6.
* `SourceFromSingleChunk` need to wait, because `ExpressionTransform` does not accept any data during execution of `sleep(1)`, so it will be in `PortFull` state for 1e6 us, and so `output_wait_elapsed_us` > 1e6.
* `LimitsCheckingTransform`/`NullSource`/`LazyOutputFormat` need to wait until `ExpressionTransform` will execute `sleep(1)` to process the result, so `input_wait_elapsed_us` > 1e6.

<h2 id="see-also">
  See Also
</h2>

* [`EXPLAIN PIPELINE`](/reference/statements/explain#explain-pipeline)
