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

← cluster alinma_bff objects marketplace_asset_taxonomy_mv explain
Overview Objects Graph History
materialized view · alinma_bff.marketplace_asset_taxonomy_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
20 operators
Materialize · alinma_bff.marketplace_asset_taxonomy_mv
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · LeftOuter · asset_distributions_for_consumers_mv.taxonomy_node_id = tax…
2 actors
HashJoin · LeftOuter · asset_distributions_for_consumers_mv.taxonomy_node_id = tax… 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 · taxonomy_nodes_dm
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
Project · asset_distributions_for_consumers_mv
2 actors
Filter · asset_distributions_for_consumers_mv
0% idle 2 actors
StreamScan · asset_distributions_for_consumers_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.marketplace_asset_taxonomy_mv Materialize alinma_bff.marketplace_… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · LeftOuter · asset_distributions_for_consumers_mv.taxonomy_node_id = tax… SyncLogStore LeftOuter · asset_distr… — · 2 actors HashJoin · LeftOuter · asset_distributions_for_consumers_mv.taxonomy_node_id = tax… HashJoin LeftOuter · asset_distr… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · taxonomy_nodes_dm StreamScan taxonomy_nodes_dm 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 Project · asset_distributions_for_consumers_mv Project asset_distributions_for… — · 2 actors Filter · asset_distributions_for_consumers_mv Filter asset_distributions_for… idle · 2 actors StreamScan · asset_distributions_for_consumers_mv StreamScan asset_distributions_for… 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 52058 (Actor 737142,737141)
StreamMaterialize { columns: [asset_id, dimension, taxonomy_node_id, node_name_en, node_name_ar, percentage, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id(hidden), asset_distributions_for_consumers_mv.asset_distributions_dm.dimension(hidden), asset_distributions_for_consumers_mv.effective_start_date(hidden), taxonomy_nodes_dm.node_id(hidden)], stream_key: [taxonomy_node_id, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date], pk_columns: [taxonomy_node_id, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date], pk_conflict: NoCheck }
├── output: [ asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.distribution_type, asset_distributions_for_consumers_mv.taxonomy_node_id, taxonomy_nodes_dm.name_en, taxonomy_nodes_dm.name_ar, asset_distributions_for_consumers_mv.share, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date, taxonomy_nodes_dm.node_id ]
├── stream key: [ asset_distributions_for_consumers_mv.taxonomy_node_id, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date ]
└── MergeExecutor { output: [ asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.distribution_type, asset_distributions_for_consumers_mv.taxonomy_node_id, taxonomy_nodes_dm.name_en, taxonomy_nodes_dm.name_ar, asset_distributions_for_consumers_mv.share, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date, taxonomy_nodes_dm.node_id ], stream key: [ asset_distributions_for_consumers_mv.taxonomy_node_id, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date ] }

Fragment 52059 (Actor 737140,737139)
StreamSyncLogStore { output: [ asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.distribution_type, asset_distributions_for_consumers_mv.taxonomy_node_id, taxonomy_nodes_dm.name_en, taxonomy_nodes_dm.name_ar, asset_distributions_for_consumers_mv.share, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date, taxonomy_nodes_dm.node_id ], stream key: [ asset_distributions_for_consumers_mv.taxonomy_node_id, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date ] }
└── StreamHashJoin { type: LeftOuter, predicate: asset_distributions_for_consumers_mv.taxonomy_node_id = taxonomy_nodes_dm.node_id }
    ├── output: [ asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.distribution_type, asset_distributions_for_consumers_mv.taxonomy_node_id, taxonomy_nodes_dm.name_en, taxonomy_nodes_dm.name_ar, asset_distributions_for_consumers_mv.share, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date, taxonomy_nodes_dm.node_id ]
    ├── stream key: [ asset_distributions_for_consumers_mv.taxonomy_node_id, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date ]
    ├── MergeExecutor { output: [ asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.distribution_type, asset_distributions_for_consumers_mv.taxonomy_node_id, asset_distributions_for_consumers_mv.share, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date ], stream key: [ asset_distributions_for_consumers_mv.taxonomy_node_id, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date ] }
    └── MergeExecutor { output: [ taxonomy_nodes_dm.node_id, taxonomy_nodes_dm.name_en, taxonomy_nodes_dm.name_ar ], stream key: [ taxonomy_nodes_dm.node_id ] }

Fragment 52060 (Actor 737144,737143)
StreamLocalityProvider { locality_columns: [asset_distributions_for_consumers_mv.taxonomy_node_id] } { output: [ asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.distribution_type, asset_distributions_for_consumers_mv.taxonomy_node_id, asset_distributions_for_consumers_mv.share, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date ], stream key: [ asset_distributions_for_consumers_mv.taxonomy_node_id, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date ] }
└── MergeExecutor { output: [ asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.distribution_type, asset_distributions_for_consumers_mv.taxonomy_node_id, asset_distributions_for_consumers_mv.share, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date ], stream key: [ asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.taxonomy_node_id, asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date ] }

Fragment 52061 (Actor 736992,736991)
StreamProject { exprs: [asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.distribution_type, asset_distributions_for_consumers_mv.taxonomy_node_id, asset_distributions_for_consumers_mv.share, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date] }
├── output: [ asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.distribution_type, asset_distributions_for_consumers_mv.taxonomy_node_id, asset_distributions_for_consumers_mv.share, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date ]
├── stream key: [ asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.taxonomy_node_id, asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date ]
└── StreamFilter { predicate: In(asset_distributions_for_consumers_mv.distribution_type, 'asset_classes':Varchar, 'regions':Varchar) AND (IsNull(asset_distributions_for_consumers_mv.effective_end_date) OR (asset_distributions_for_consumers_mv.effective_end_date = '9999-12-31':Date)) AND Not(IsNull(asset_distributions_for_consumers_mv.share)) }
    ├── output: [ asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.distribution_type, asset_distributions_for_consumers_mv.taxonomy_node_id, asset_distributions_for_consumers_mv.share, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date, asset_distributions_for_consumers_mv.effective_end_date ]
    ├── stream key: [ asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.taxonomy_node_id, asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date ]
    └── StreamTableScan { table: asset_distributions_for_consumers_mv, columns: [asset_id, distribution_type, taxonomy_node_id, share, taxonomy_nodes_dm.dimension_id, asset_distributions_dm.dimension, effective_start_date, effective_end_date] }
        ├── output: [ asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.distribution_type, asset_distributions_for_consumers_mv.taxonomy_node_id, asset_distributions_for_consumers_mv.share, asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date, asset_distributions_for_consumers_mv.effective_end_date ]
        ├── stream key: [ asset_distributions_for_consumers_mv.taxonomy_nodes_dm.dimension_id, asset_distributions_for_consumers_mv.taxonomy_node_id, asset_distributions_for_consumers_mv.asset_id, asset_distributions_for_consumers_mv.asset_distributions_dm.dimension, asset_distributions_for_consumers_mv.effective_start_date ]
        ├── Upstream { output: [ asset_id, distribution_type, taxonomy_node_id, share, taxonomy_nodes_dm.dimension_id, asset_distributions_dm.dimension, effective_start_date, effective_end_date ], stream key: [] }
        └── BatchPlanNode { output: [ asset_id, distribution_type, taxonomy_node_id, share, taxonomy_nodes_dm.dimension_id, asset_distributions_dm.dimension, effective_start_date, effective_end_date ], stream key: [] }

Fragment 52062 (Actor 737145,737146)
StreamTableScan { table: taxonomy_nodes_dm, columns: [node_id, name_en, name_ar] } { output: [ taxonomy_nodes_dm.node_id, taxonomy_nodes_dm.name_en, taxonomy_nodes_dm.name_ar ], stream key: [ taxonomy_nodes_dm.node_id ] }
├── Upstream { output: [ node_id, name_en, name_ar ], stream key: [] }
└── BatchPlanNode { output: [ node_id, name_en, name_ar ], stream key: [] }