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

← cluster alinma_bff objects advisor_kpis_mv explain
Overview Objects Graph History
materialized view · alinma_bff.advisor_kpis_mv 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
16 operators
Materialize · alinma_bff.advisor_kpis_mv
0% idle 2 actors
Project
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · LeftOuter · advisor_kpi_counts_mv.user_id = advisor_kpi_values_mv_next.…
2 actors
HashJoin · LeftOuter · advisor_kpi_counts_mv.user_id = advisor_kpi_values_mv_next.… 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 · advisor_kpi_values_mv_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · advisor_kpi_counts_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.
Materialize · alinma_bff.advisor_kpis_mv Materialize alinma_bff.advisor_kpis… idle · 2 actors Project Project — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · LeftOuter · advisor_kpi_counts_mv.user_id = advisor_kpi_values_mv_next.… SyncLogStore LeftOuter · advisor_kpi… — · 2 actors HashJoin · LeftOuter · advisor_kpi_counts_mv.user_id = advisor_kpi_values_mv_next.… HashJoin LeftOuter · advisor_kpi… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · advisor_kpi_values_mv_next StreamScan advisor_kpi_values_mv_n… idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · advisor_kpi_counts_mv StreamScan advisor_kpi_counts_mv 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 59352 (Actor 741196,741197)
StreamMaterialize { columns: [user_id, clients_count, portfolios_count, accounts_count, total_financing, total_relationship_value, total_net_assets, total_deposits, total_aum, currency_code, updated_at], stream_key: [user_id], pk_columns: [user_id], pk_conflict: NoCheck } { output: [ advisor_kpi_counts_mv.user_id, advisor_kpi_counts_mv.clients_count, advisor_kpi_counts_mv.portfolios_count, advisor_kpi_counts_mv.accounts_count, $expr1, $expr2, $expr3, $expr4, $expr5, 'SAR':Varchar, $expr6 ], stream key: [ advisor_kpi_counts_mv.user_id ] }
└── StreamProject { exprs: [advisor_kpi_counts_mv.user_id, advisor_kpi_counts_mv.clients_count, advisor_kpi_counts_mv.portfolios_count, advisor_kpi_counts_mv.accounts_count, Coalesce(advisor_kpi_values_mv_next.total_financing, 0:Decimal) as $expr1, Coalesce(advisor_kpi_values_mv_next.total_relationship_value, 0:Decimal) as $expr2, Coalesce(advisor_kpi_values_mv_next.total_net_assets, 0:Decimal) as $expr3, Coalesce(advisor_kpi_values_mv_next.total_deposits, 0:Decimal) as $expr4, Coalesce(advisor_kpi_values_mv_next.total_aum, 0:Decimal) as $expr5, 'SAR':Varchar, Coalesce(advisor_kpi_values_mv_next.updated_at, '1970-01-01 00:00:00+00:00':Timestamptz) as $expr6] }
    ├── output: [ advisor_kpi_counts_mv.user_id, advisor_kpi_counts_mv.clients_count, advisor_kpi_counts_mv.portfolios_count, advisor_kpi_counts_mv.accounts_count, $expr1, $expr2, $expr3, $expr4, $expr5, 'SAR':Varchar, $expr6 ]
    ├── stream key: [ advisor_kpi_counts_mv.user_id ]
    └── MergeExecutor { output: [ advisor_kpi_counts_mv.user_id, advisor_kpi_counts_mv.clients_count, advisor_kpi_counts_mv.portfolios_count, advisor_kpi_counts_mv.accounts_count, advisor_kpi_values_mv_next.total_net_assets, advisor_kpi_values_mv_next.total_relationship_value, advisor_kpi_values_mv_next.total_aum, advisor_kpi_values_mv_next.total_deposits, advisor_kpi_values_mv_next.total_financing, advisor_kpi_values_mv_next.updated_at, advisor_kpi_values_mv_next.user_id ], stream key: [ advisor_kpi_counts_mv.user_id ] }

Fragment 59353 (Actor 741195,741194)
StreamSyncLogStore { output: [ advisor_kpi_counts_mv.user_id, advisor_kpi_counts_mv.clients_count, advisor_kpi_counts_mv.portfolios_count, advisor_kpi_counts_mv.accounts_count, advisor_kpi_values_mv_next.total_net_assets, advisor_kpi_values_mv_next.total_relationship_value, advisor_kpi_values_mv_next.total_aum, advisor_kpi_values_mv_next.total_deposits, advisor_kpi_values_mv_next.total_financing, advisor_kpi_values_mv_next.updated_at, advisor_kpi_values_mv_next.user_id ], stream key: [ advisor_kpi_counts_mv.user_id ] }
└── StreamHashJoin { type: LeftOuter, predicate: advisor_kpi_counts_mv.user_id = advisor_kpi_values_mv_next.user_id } { output: [ advisor_kpi_counts_mv.user_id, advisor_kpi_counts_mv.clients_count, advisor_kpi_counts_mv.portfolios_count, advisor_kpi_counts_mv.accounts_count, advisor_kpi_values_mv_next.total_net_assets, advisor_kpi_values_mv_next.total_relationship_value, advisor_kpi_values_mv_next.total_aum, advisor_kpi_values_mv_next.total_deposits, advisor_kpi_values_mv_next.total_financing, advisor_kpi_values_mv_next.updated_at, advisor_kpi_values_mv_next.user_id ], stream key: [ advisor_kpi_counts_mv.user_id ] }
    ├── MergeExecutor { output: [ advisor_kpi_counts_mv.user_id, advisor_kpi_counts_mv.clients_count, advisor_kpi_counts_mv.portfolios_count, advisor_kpi_counts_mv.accounts_count ], stream key: [ advisor_kpi_counts_mv.user_id ] }
    └── MergeExecutor { output: [ advisor_kpi_values_mv_next.user_id, advisor_kpi_values_mv_next.total_net_assets, advisor_kpi_values_mv_next.total_relationship_value, advisor_kpi_values_mv_next.total_aum, advisor_kpi_values_mv_next.total_deposits, advisor_kpi_values_mv_next.total_financing, advisor_kpi_values_mv_next.updated_at ], stream key: [ advisor_kpi_values_mv_next.user_id ] }

Fragment 59354 (Actor 741400,741401)
StreamTableScan { table: advisor_kpi_counts_mv, columns: [user_id, clients_count, portfolios_count, accounts_count] } { output: [ advisor_kpi_counts_mv.user_id, advisor_kpi_counts_mv.clients_count, advisor_kpi_counts_mv.portfolios_count, advisor_kpi_counts_mv.accounts_count ], stream key: [ advisor_kpi_counts_mv.user_id ] }
├── Upstream { output: [ user_id, clients_count, portfolios_count, accounts_count ], stream key: [] }
└── BatchPlanNode { output: [ user_id, clients_count, portfolios_count, accounts_count ], stream key: [] }

Fragment 59355 (Actor 741403,741402)
StreamTableScan { table: advisor_kpi_values_mv_next, columns: [user_id, total_net_assets, total_relationship_value, total_aum, total_deposits, total_financing, updated_at] } { output: [ advisor_kpi_values_mv_next.user_id, advisor_kpi_values_mv_next.total_net_assets, advisor_kpi_values_mv_next.total_relationship_value, advisor_kpi_values_mv_next.total_aum, advisor_kpi_values_mv_next.total_deposits, advisor_kpi_values_mv_next.total_financing, advisor_kpi_values_mv_next.updated_at ], stream key: [ advisor_kpi_values_mv_next.user_id ] }
├── Upstream { output: [ user_id, total_net_assets, total_relationship_value, total_aum, total_deposits, total_financing, updated_at ], stream key: [] }
└── BatchPlanNode { output: [ user_id, total_net_assets, total_relationship_value, total_aum, total_deposits, total_financing, updated_at ], stream key: [] }