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_next.type = 'none':Varchar) O…
2 actors
Filter · upsert · ((client_to_account_groups_mv_next.type = 'none':Varchar) O…
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · LeftOuter · client_to_account_groups_mv_next.client_id = client_account…
2 actors
HashJoin · LeftOuter · client_to_account_groups_mv_next.client_id = client_account… 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_next
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_next
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_next.type = 'none':Varchar) O… Project upsert · ((client_to_ac… — · 2 actors Filter · upsert · ((client_to_account_groups_mv_next.type = 'none':Varchar) O… Filter upsert · ((client_to_ac… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · LeftOuter · client_to_account_groups_mv_next.client_id = client_account… SyncLogStore LeftOuter · client_to_a… — · 2 actors HashJoin · LeftOuter · client_to_account_groups_mv_next.client_id = client_account… HashJoin LeftOuter · client_to_a… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · client_account_group_types_mv_next 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_next 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 38083 (Actor 744596,744597)
StreamSink { type: upsert, columns: [client_id, account_group_id, type, client_to_account_groups_mv_next.$src(hidden)], downstream_pk: [client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.account_group_id, client_to_account_groups_mv_next.type] }
├── output: [ client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.account_group_id, client_to_account_groups_mv_next.type, client_to_account_groups_mv_next.$src ]
├── stream key: [ client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.type, client_to_account_groups_mv_next.$src ]
└── StreamProject { exprs: [client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.account_group_id, client_to_account_groups_mv_next.type, client_to_account_groups_mv_next.$src] }
    ├── output: [ client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.account_group_id, client_to_account_groups_mv_next.type, client_to_account_groups_mv_next.$src ]
    ├── stream key: [ client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.type, client_to_account_groups_mv_next.$src ]
    └── StreamFilter { predicate: ((client_to_account_groups_mv_next.type = 'none':Varchar) OR Not(IsNull(client_account_group_types_mv_next.client_id))) }
        ├── output:
        │   ┌── client_to_account_groups_mv_next.client_id
        │   ├── client_to_account_groups_mv_next.account_group_id
        │   ├── client_to_account_groups_mv_next.type
        │   ├── client_account_group_types_mv_next.client_id
        │   ├── client_to_account_groups_mv_next.$src
        │   └── client_account_group_types_mv_next.type
        ├── stream key: [ client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.type, client_to_account_groups_mv_next.$src ]
        └── MergeExecutor
            ├── output:
            │   ┌── client_to_account_groups_mv_next.client_id
            │   ├── client_to_account_groups_mv_next.account_group_id
            │   ├── client_to_account_groups_mv_next.type
            │   ├── client_account_group_types_mv_next.client_id
            │   ├── client_to_account_groups_mv_next.$src
            │   └── client_account_group_types_mv_next.type
            └── stream key: [ client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.type, client_to_account_groups_mv_next.$src ]

Fragment 38084 (Actor 744595,744594)
StreamSyncLogStore
├── output:
│   ┌── client_to_account_groups_mv_next.client_id
│   ├── client_to_account_groups_mv_next.account_group_id
│   ├── client_to_account_groups_mv_next.type
│   ├── client_account_group_types_mv_next.client_id
│   ├── client_to_account_groups_mv_next.$src
│   └── client_account_group_types_mv_next.type
├── stream key: [ client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.type, client_to_account_groups_mv_next.$src ]
└── StreamHashJoin { type: LeftOuter, predicate: client_to_account_groups_mv_next.client_id = client_account_group_types_mv_next.client_id AND client_to_account_groups_mv_next.type = client_account_group_types_mv_next.type }
    ├── output:
    │   ┌── client_to_account_groups_mv_next.client_id
    │   ├── client_to_account_groups_mv_next.account_group_id
    │   ├── client_to_account_groups_mv_next.type
    │   ├── client_account_group_types_mv_next.client_id
    │   ├── client_to_account_groups_mv_next.$src
    │   └── client_account_group_types_mv_next.type
    ├── stream key: [ client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.type, client_to_account_groups_mv_next.$src ]
    ├── MergeExecutor
    │   ├── output: [ client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.account_group_id, client_to_account_groups_mv_next.type, client_to_account_groups_mv_next.$src ]
    │   └── stream key: [ client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.type, client_to_account_groups_mv_next.$src ]
    └── MergeExecutor { output: [ client_account_group_types_mv_next.client_id, client_account_group_types_mv_next.type ], stream key: [ client_account_group_types_mv_next.client_id, client_account_group_types_mv_next.type ] }

Fragment 38085 (Actor 744598,744599)
StreamLocalityProvider { locality_columns: [client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.type] }
├── output: [ client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.account_group_id, client_to_account_groups_mv_next.type, client_to_account_groups_mv_next.$src ]
├── stream key: [ client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.type, client_to_account_groups_mv_next.$src ]
└── MergeExecutor
    ├── output: [ client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.account_group_id, client_to_account_groups_mv_next.type, client_to_account_groups_mv_next.$src ]
    └── stream key: [ client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.$src ]

Fragment 38086 (Actor 744605,744604)
StreamTableScan { table: client_to_account_groups_mv_next, columns: [client_id, account_group_id, type, $src] }
├── output: [ client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.account_group_id, client_to_account_groups_mv_next.type, client_to_account_groups_mv_next.$src ]
├── stream key: [ client_to_account_groups_mv_next.client_id, client_to_account_groups_mv_next.$src ]
├── Upstream { output: [ client_id, account_group_id, type, $src ], stream key: [] }
└── BatchPlanNode { output: [ client_id, account_group_id, type, $src ], stream key: [] }

Fragment 38087 (Actor 744607,744606)
StreamTableScan { table: client_account_group_types_mv_next, columns: [client_id, type] }
├── output: [ client_account_group_types_mv_next.client_id, client_account_group_types_mv_next.type ]
├── stream key: [ client_account_group_types_mv_next.client_id, client_account_group_types_mv_next.type ]
├── Upstream { output: [ client_id, type ], stream key: [] }
└── BatchPlanNode { output: [ client_id, type ], stream key: [] }