RWM Console cluster: risingwave-alinma.alinma-rw.svc.cluster.local

← cluster insights objects client_to_account_groups_sink explain
Overview Objects Graph History
sink · insights.client_to_account_groups_sink profiled over 5s
seconds (1–30)

Job is idle — throughput ~0; structure shown.

Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
20 operators
Sink · insights.client_to_account_groups_sink
0% idle 2 actors
Project · upsert · ((client_to_account_groups_mv.type = 'none':Varchar) OR Not…
2 actors
Filter · upsert · ((client_to_account_groups_mv.type = 'none':Varchar) OR Not…
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · LeftOuter · client_to_account_groups_mv.client_id = client_account_grou…
2 actors
HashJoin · LeftOuter · client_to_account_groups_mv.client_id = client_account_grou… Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · client_account_group_types_mv
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · client_to_account_groups_mv
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Heat = the operator's output-buffer backpressure over the sampling window. Click a node to fold its subtree.
Sink · insights.client_to_account_groups_sink Sink insights.client_to_acco… idle · 2 actors Project · upsert · ((client_to_account_groups_mv.type = 'none':Varchar) OR Not… Project upsert · ((client_to_ac… — · 2 actors Filter · upsert · ((client_to_account_groups_mv.type = 'none':Varchar) OR Not… Filter upsert · ((client_to_ac… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · LeftOuter · client_to_account_groups_mv.client_id = client_account_grou… SyncLogStore LeftOuter · client_to_a… — · 2 actors HashJoin · LeftOuter · client_to_account_groups_mv.client_id = client_account_grou… HashJoin LeftOuter · client_to_a… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · client_account_group_types_mv StreamScan client_account_group_ty… idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · client_to_account_groups_mv StreamScan client_to_account_group… idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors
Streaming operator plan from EXPLAIN ANALYZE. Node heat = backpressure. Drag to pan, scroll to zoom.
Fragments (DESCRIBE FRAGMENTS) — click to expand
Fragment 52622 (Actor 738095,738096)
StreamSink { type: upsert, columns: [client_id, account_group_id, type, client_to_account_groups_mv.$src(hidden)], downstream_pk: [client_to_account_groups_mv.client_id, client_to_account_groups_mv.account_group_id, client_to_account_groups_mv.type] }
├── output: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.account_group_id, client_to_account_groups_mv.type, client_to_account_groups_mv.$src ]
├── stream key: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.type, client_to_account_groups_mv.$src ]
└── StreamProject { exprs: [client_to_account_groups_mv.client_id, client_to_account_groups_mv.account_group_id, client_to_account_groups_mv.type, client_to_account_groups_mv.$src] }
    ├── output: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.account_group_id, client_to_account_groups_mv.type, client_to_account_groups_mv.$src ]
    ├── stream key: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.type, client_to_account_groups_mv.$src ]
    └── StreamFilter { predicate: ((client_to_account_groups_mv.type = 'none':Varchar) OR Not(IsNull(client_account_group_types_mv.client_id))) }
        ├── output:
        │   ┌── client_to_account_groups_mv.client_id
        │   ├── client_to_account_groups_mv.account_group_id
        │   ├── client_to_account_groups_mv.type
        │   ├── client_account_group_types_mv.client_id
        │   ├── client_to_account_groups_mv.$src
        │   └── client_account_group_types_mv.type
        ├── stream key: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.type, client_to_account_groups_mv.$src ]
        └── MergeExecutor
            ├── output:
            │   ┌── client_to_account_groups_mv.client_id
            │   ├── client_to_account_groups_mv.account_group_id
            │   ├── client_to_account_groups_mv.type
            │   ├── client_account_group_types_mv.client_id
            │   ├── client_to_account_groups_mv.$src
            │   └── client_account_group_types_mv.type
            └── stream key: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.type, client_to_account_groups_mv.$src ]

Fragment 52623 (Actor 738097,738098)
StreamSyncLogStore
├── output: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.account_group_id, client_to_account_groups_mv.type, client_account_group_types_mv.client_id, client_to_account_groups_mv.$src, client_account_group_types_mv.type ]
├── stream key: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.type, client_to_account_groups_mv.$src ]
└── StreamHashJoin { type: LeftOuter, predicate: client_to_account_groups_mv.client_id = client_account_group_types_mv.client_id AND client_to_account_groups_mv.type = client_account_group_types_mv.type }
    ├── output: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.account_group_id, client_to_account_groups_mv.type, client_account_group_types_mv.client_id, client_to_account_groups_mv.$src, client_account_group_types_mv.type ]
    ├── stream key: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.type, client_to_account_groups_mv.$src ]
    ├── MergeExecutor
    │   ├── output: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.account_group_id, client_to_account_groups_mv.type, client_to_account_groups_mv.$src ]
    │   └── stream key: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.type, client_to_account_groups_mv.$src ]
    └── MergeExecutor { output: [ client_account_group_types_mv.client_id, client_account_group_types_mv.type ], stream key: [ client_account_group_types_mv.client_id, client_account_group_types_mv.type ] }

Fragment 52624 (Actor 738099,738100)
StreamLocalityProvider { locality_columns: [client_to_account_groups_mv.client_id, client_to_account_groups_mv.type] }
├── output: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.account_group_id, client_to_account_groups_mv.type, client_to_account_groups_mv.$src ]
├── stream key: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.type, client_to_account_groups_mv.$src ]
└── MergeExecutor
    ├── output: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.account_group_id, client_to_account_groups_mv.type, client_to_account_groups_mv.$src ]
    └── stream key: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.$src ]

Fragment 52625 (Actor 738103,738104)
StreamTableScan { table: client_to_account_groups_mv, columns: [client_id, account_group_id, type, $src] }
├── output: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.account_group_id, client_to_account_groups_mv.type, client_to_account_groups_mv.$src ]
├── stream key: [ client_to_account_groups_mv.client_id, client_to_account_groups_mv.$src ]
├── Upstream { output: [ client_id, account_group_id, type, $src ], stream key: [] }
└── BatchPlanNode { output: [ client_id, account_group_id, type, $src ], stream key: [] }

Fragment 52626 (Actor 738078,738077)
StreamTableScan { table: client_account_group_types_mv, columns: [client_id, type] }
├── output: [ client_account_group_types_mv.client_id, client_account_group_types_mv.type ]
├── stream key: [ client_account_group_types_mv.client_id, client_account_group_types_mv.type ]
├── Upstream { output: [ client_id, type ], stream key: [] }
└── BatchPlanNode { output: [ client_id, type ], stream key: [] }