-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
Is your feature request related to a problem or challenge? Please describe what you are trying to do.
I would like to be able get an overall understanding of where time is being spent during query execution via EXPLAIN ANALYZE (see #858) so that I know where to focuse additional performance optimization activities
Additionally, I would like to be able to graph a stacked flamechart such as the following see more details on https://github.com/influxdata/influxdb_iox/issues/2273) that shows when the different operators ran in relation to each other.
Describe the solution you'd like
I would like to instrument all operators (impl ExecutionPlan) included in DataFusion so that they produce at least the following metrics:
- output_rows: total rows produced at the output of the operator
- cpu_nanos: the total time spent (not including any time spent in the input stream or waiting to be scheduled)
- start_time: the wall clock time at which
executewas run - stop_time: the wall clock time at which the last output record batch was produced
I plan to use the SQLMetric infrastructure for doing so, probably after #679
Describe alternatives you've considered
Open questions:
- Handling the output of different partitions (each operator can produce multiple output partitions / streams, and it is not yet clear to me if recording stats on a per partition level is important)
- How to handle operators that don't provide metrics such as potentially user defined ones (probably will fill in with their parents)
Additional context
Related work:
- Metrics improvement: Improved features and interoperability for SQLMetrics #679
- IOx Usecase https://github.com/influxdata/influxdb_iox/issues/2273
