
# 执行计划算子监控
#### 执行计划算子历史监控数据
执行计划算子历史监控数据中记录了查询作业每个算子细粒度的执行进度信息（包括开始时间、执行时长、已处理行数、内存、下盘等），历史信息每5秒采集上报一次。
执行计划算子历史监控数据的字段如下表所示：
表1执行计划算子历史监控数据字段 
| 字段名称                | 类型                       | 说明                     |
|:---|:---|:---|
| session_id          | text                     | 语句的Session ID。         |
| statement_id        | text                     | 语句ID。                  |
| endpoint_id         | text                     | 端点ID。                  |
| update_time         | timestamp with time zone | 当前上报时间。                |
| query_id            | text                     | debug_query_id，CN内部适用。 |
| plan_node_id        | int                      | 执行计划中节点的唯一ID。          |
| plan_node_name      | text                     | 执行计划中节点的名称。            |
| start_time          | timestamp                | 开始时间。                  |
| duration            | bigint                   | 执行时长。                  |
| status              | text                     | 当前状态。                  |
| query_dop           | int                      | 查询的并行度。                |
| estimated_rows      | bigint                   | 预估的行数。                 |
| tuple_processed     | bigint                   | 当前已经处理完成的行数。           |
| min_peak_memory     | int                      | 内存使用的最小峰值。             |
| max_peak_memory     | int                      | 内存使用的最大峰值。             |
| average_peak_memory | int                      | 内存使用的平均峰值。             |
| memory_skew_percent | int                      | 内存使用倾斜百分比。             |
| min_spill_size      | int                      | 下盘的最小数据量。              |
| max_spill_size      | int                      | 下盘的最大数据量。              |
| average_spill_size  | int                      | 下盘的平均数据量。              |
| spill_skew_percent  | int                      | 下盘数据的倾斜百分比。            |
| min_cpu_time        | bigint                   | 单个节点的最小CPU时间。          |
| max_cpu_time        | bigint                   | 单个节点的最大CPU时间。          |
| total_cpu_time      | bigint                   | 所有节点的总CPU时间。           |
| cpu_skew_percent    | bigint                   | CPU使用倾斜百分比。            |
| warning             | text                     | 执行过程中出现的警告信息。          |
| parent_id           | int                      | 父节点ID。                 |
| exec_count          | int                      | 该节点被执行的次数。             |
| progress            | text                     | 执行进度百分比。               |
| min_net_size        | bigint                   | 网络传输的最小数据量。            |
| max_net_size        | bigint                   | 网络传输的最大数据量。            |
| total_net_size      | bigint                   | 网络传输的总数据量。             |
| min_read_size       | bigint                   | 单个节点读取的最小数据量。          |
| max_read_size       | bigint                   | 单个节点读取的最大数据量。          |
| total_read_size     | bigint                   | 所有节点读取的总数据量。           |
| min_write_size      | bigint                   | 单个节点写入的最小数据量。          |
| max_write_size      | bigint                   | 单个节点写入的最大数据量。          |
| total_write_size    | bigint                   | 所有节点写入的总数据量。           |
   
#### 执行计划算子实时监控数据
执行计划算子实时监控数据中记录了查询作业每个算子细粒度的执行进度信息（包括开始时间、执行时长、已处理行数、内存、下盘等），后台线程每5秒采样一次，实时监控数据只能获取最近一次采样时在执行的算子信息，对于执行结束的语句无法获取信息。
使用方式：
```
select * from pgxc_wlm_operator_statistics(query_id);
```
输入参数：
表2**函数输入参数** 
| 参数       | 类型   | 说明                                                                    |
|:---|:---|:---|
| query_id | text | 语句的Query ID。 值为0输出全部Query的信息。 |
   
执行计划算子实时监控数据对外展示的字段如下：
表3执行计划算子实时监控数据的字段 
| 字段名称                | 类型        | 说明                     |
|:---|:---|:---|
| session_id          | text      | 语句的Session ID。         |
| statement_id        | text      | 语句ID。                  |
| username            | text      | 用户名称。                  |
| query_id            | text      | debug_query_id，CN内部适用。 |
| tid                 | bigint    | 线程ID。                  |
| plan_node_id        | int       | 执行计划中节点的唯一ID。          |
| plan_node_name      | text      | 执行计划中节点的名称。            |
| start_time          | timestamp | 开始时间。                  |
| duration            | bigint    | 执行时长。                  |
| status              | text      | 当前状态。                  |
| query_dop           | int       | 查询的并行度。                |
| estimated_rows      | bigint    | 预估的行数。                 |
| tuple_processed     | bigint    | 当前已经处理完成的行数。           |
| min_peak_memory     | int       | 内存使用的最小峰值。             |
| max_peak_memory     | int       | 内存使用的最大峰值。             |
| average_peak_memory | int       | 内存使用的平均峰值。             |
| memory_skew_percent | int       | 内存使用倾斜百分比。             |
| min_spill_size      | int       | 下盘的最小数据量。              |
| max_spill_size      | int       | 下盘的最大数据量。              |
| average_spill_size  | int       | 下盘的平均数据量。              |
| spill_skew_percent  | int       | 下盘数据的倾斜百分比。            |
| min_cpu_time        | bigint    | 单个节点的最小CPU时间。          |
| max_cpu_time        | bigint    | 单个节点的最大CPU时间。          |
| total_cpu_time      | bigint    | 所有节点的总CPU时间。           |
| cpu_skew_percent    | bigint    | CPU使用倾斜百分比。            |
| warning             | text      | 执行过程中出现的警告信息。          |
| parent_id           | int       | 父节点ID。                 |
| exec_count          | int       | 该节点被执行的次数。             |
| progress            | text      | 执行进度百分比。               |
| min_net_size        | bigint    | 网络传输的最小数据量。            |
| max_net_size        | bigint    | 网络传输的最大数据量。            |
| total_net_size      | bigint    | 网络传输的总数据量。             |
| min_read_size       | bigint    | 单个节点读取的最小数据量。          |
| max_read_size       | bigint    | 单个节点读取的最大数据量。          |
| total_read_size     | bigint    | 所有节点读取的总数据量。           |
| min_write_size      | bigint    | 单个节点写入的最小数据量。          |
| max_write_size      | bigint    | 单个节点写入的最大数据量。          |
| total_write_size    | bigint    | 所有节点写入的总数据量。           |
   
