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

← cluster alinma_bff objects order_execution_summaries_mv explain
Overview Objects Graph History
materialized view · alinma_bff.order_execution_summaries_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 lookupsAggregation state — unbounded unless keyed or temporally filtered
29 operators
Materialize · alinma_bff.order_execution_summaries_mv
0% idle 2 actors
Project
2 actors
Project
2 actors
HashAgg Aggregation state — unbounded unless keyed or temporally filtered
0% idle 2 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · LeftOuter · order_executions_bounded_mv.order_id = order_execution_fee_…
2 actors
HashJoin · LeftOuter · order_executions_bounded_mv.order_id = order_execution_fee_… 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
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · order_execution_fee_lines_mv
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · order_executions_bounded_mv
2 actors
HashAgg · order_executions_bounded_mv Aggregation state — unbounded unless keyed or temporally filtered
0% idle 2 actors
Project · order_executions_bounded_mv
2 actors
Project · order_executions_bounded_mv
2 actors
StreamScan · order_executions_bounded_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.order_execution_summaries_mv Materialize alinma_bff.order_execut… idle · 2 actors Project Project — · 2 actors Project Project — · 2 actors HashAgg HashAgg idle · 2 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project Project — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · LeftOuter · order_executions_bounded_mv.order_id = order_execution_fee_… SyncLogStore LeftOuter · order_execu… — · 2 actors HashJoin · LeftOuter · order_executions_bounded_mv.order_id = order_execution_fee_… HashJoin LeftOuter · order_execu… idle · 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 · order_execution_fee_lines_mv StreamScan order_execution_fee_lin… idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · order_executions_bounded_mv Project order_executions_bounde… — · 2 actors HashAgg · order_executions_bounded_mv HashAgg order_executions_bounde… idle · 2 actors Project · order_executions_bounded_mv Project order_executions_bounde… — · 2 actors Project · order_executions_bounded_mv Project order_executions_bounde… — · 2 actors StreamScan · order_executions_bounded_mv StreamScan order_executions_bounde… 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 52297 (Actor 737599,737598)
StreamMaterialize { columns: [order_id, execution_summary], stream_key: [order_id], pk_columns: [order_id], pk_conflict: NoCheck } { output: [ order_executions_bounded_mv.order_id, $expr6 ], stream key: [ order_executions_bounded_mv.order_id ] }
└── StreamProject { exprs: [order_executions_bounded_mv.order_id, JsonbBuildObject('filledQuantity':Varchar, JsonbBuildObject('value':Varchar, max(sum($expr1))::Varchar), 'averagePrice':Varchar, JsonbBuildObject('currencyCode':Varchar, $expr5, 'amount':Varchar, JsonbBuildObject('value':Varchar, Case((max(sum($expr1)) > 0:Decimal), (max(sum($expr2)) / max(sum($expr1)))::Varchar, '0':Varchar))), 'totalAmount':Varchar, JsonbBuildObject('currencyCode':Varchar, $expr5, 'amount':Varchar, JsonbBuildObject('value':Varchar, max(sum($expr2))::Varchar)), 'totalFees':Varchar, JsonbBuildObject('currencyCode':Varchar, $expr5, 'amount':Varchar, JsonbBuildObject('value':Varchar, Coalesce(sum(order_execution_fee_lines_mv.amount), 0:Decimal)::Varchar)), 'fees':Varchar, Coalesce(jsonb_agg($expr4 order_by(order_execution_fee_lines_mv.kind ASC)) filter(Not(IsNull(order_execution_fee_lines_mv.order_id))), '[]':Jsonb)) as $expr6] }
    ├── output: [ order_executions_bounded_mv.order_id, $expr6 ]
    ├── stream key: [ order_executions_bounded_mv.order_id ]
    └── StreamProject { exprs: [order_executions_bounded_mv.order_id, max(sum($expr1)), max(max($expr3)), max(sum($expr2)), sum(order_execution_fee_lines_mv.amount), jsonb_agg($expr4 order_by(order_execution_fee_lines_mv.kind ASC)) filter(Not(IsNull(order_execution_fee_lines_mv.order_id))), JsonbBuildObject('value':Varchar, Coalesce(max(max($expr3)), '':Varchar)) as $expr5] } { output: [ order_executions_bounded_mv.order_id, max(sum($expr1)), max(max($expr3)), max(sum($expr2)), sum(order_execution_fee_lines_mv.amount), jsonb_agg($expr4 order_by(order_execution_fee_lines_mv.kind ASC)) filter(Not(IsNull(order_execution_fee_lines_mv.order_id))), $expr5 ], stream key: [ order_executions_bounded_mv.order_id ] }
        └── StreamHashAgg { group_key: [order_executions_bounded_mv.order_id], aggs: [max(sum($expr1)), max(max($expr3)), max(sum($expr2)), sum(order_execution_fee_lines_mv.amount), jsonb_agg($expr4 order_by(order_execution_fee_lines_mv.kind ASC)) filter(Not(IsNull(order_execution_fee_lines_mv.order_id))), count] } { output: [ order_executions_bounded_mv.order_id, max(sum($expr1)), max(max($expr3)), max(sum($expr2)), sum(order_execution_fee_lines_mv.amount), jsonb_agg($expr4 order_by(order_execution_fee_lines_mv.kind ASC)) filter(Not(IsNull(order_execution_fee_lines_mv.order_id))), count ], stream key: [ order_executions_bounded_mv.order_id ] }
            └── StreamLocalityProvider { locality_columns: [order_executions_bounded_mv.order_id] } { output: [ order_executions_bounded_mv.order_id, sum($expr1), max($expr3), sum($expr2), order_execution_fee_lines_mv.amount, order_execution_fee_lines_mv.order_id, $expr4, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.currency_code ], stream key: [ order_executions_bounded_mv.order_id, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.currency_code ] }
                └── MergeExecutor { output: [ order_executions_bounded_mv.order_id, sum($expr1), max($expr3), sum($expr2), order_execution_fee_lines_mv.amount, order_execution_fee_lines_mv.order_id, $expr4, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.currency_code ], stream key: [ order_executions_bounded_mv.order_id, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.currency_code ] }

Fragment 52298 (Actor 737600,737601)
StreamProject { exprs: [order_executions_bounded_mv.order_id, sum($expr1), max($expr3), sum($expr2), order_execution_fee_lines_mv.amount, order_execution_fee_lines_mv.order_id, JsonbBuildObject('kind':Varchar, order_execution_fee_lines_mv.kind, 'amount':Varchar, JsonbBuildObject('currencyCode':Varchar, JsonbBuildObject('value':Varchar, Coalesce(max($expr3), '':Varchar)), 'amount':Varchar, JsonbBuildObject('value':Varchar, order_execution_fee_lines_mv.amount::Varchar))) as $expr4, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.currency_code] }
├── output: [ order_executions_bounded_mv.order_id, sum($expr1), max($expr3), sum($expr2), order_execution_fee_lines_mv.amount, order_execution_fee_lines_mv.order_id, $expr4, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.currency_code ]
├── stream key: [ order_executions_bounded_mv.order_id, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.currency_code ]
└── MergeExecutor { output: [ order_executions_bounded_mv.order_id, sum($expr1), sum($expr2), max($expr3), order_execution_fee_lines_mv.order_id, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.amount, order_execution_fee_lines_mv.currency_code ], stream key: [ order_executions_bounded_mv.order_id, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.currency_code ] }

Fragment 52299 (Actor 737597,737596)
StreamSyncLogStore { output: [ order_executions_bounded_mv.order_id, sum($expr1), sum($expr2), max($expr3), order_execution_fee_lines_mv.order_id, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.amount, order_execution_fee_lines_mv.currency_code ], stream key: [ order_executions_bounded_mv.order_id, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.currency_code ] }
└── StreamHashJoin { type: LeftOuter, predicate: order_executions_bounded_mv.order_id = order_execution_fee_lines_mv.order_id } { output: [ order_executions_bounded_mv.order_id, sum($expr1), sum($expr2), max($expr3), order_execution_fee_lines_mv.order_id, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.amount, order_execution_fee_lines_mv.currency_code ], stream key: [ order_executions_bounded_mv.order_id, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.currency_code ] }
    ├── MergeExecutor { output: [ order_executions_bounded_mv.order_id, sum($expr1), sum($expr2), max($expr3) ], stream key: [ order_executions_bounded_mv.order_id ] }
    └── MergeExecutor { output: [ order_execution_fee_lines_mv.order_id, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.amount, order_execution_fee_lines_mv.currency_code ], stream key: [ order_execution_fee_lines_mv.order_id, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.currency_code ] }

Fragment 52300 (Actor 737605,737604)
StreamProject { exprs: [order_executions_bounded_mv.order_id, sum($expr1), sum($expr2), max($expr3)] } { output: [ order_executions_bounded_mv.order_id, sum($expr1), sum($expr2), max($expr3) ], stream key: [ order_executions_bounded_mv.order_id ] }
└── StreamHashAgg { group_key: [order_executions_bounded_mv.order_id], aggs: [sum($expr1), sum($expr2), max($expr3), count] } { output: [ order_executions_bounded_mv.order_id, sum($expr1), sum($expr2), max($expr3), count ], stream key: [ order_executions_bounded_mv.order_id ] }
    └── StreamProject { exprs: [order_executions_bounded_mv.order_id, $expr1, ($expr1 * JsonbAccessStr(JsonbAccess(order_executions_bounded_mv.price, 'amount':Varchar), 'value':Varchar)::Decimal) as $expr2, Coalesce(JsonbAccessStr(JsonbAccess(order_executions_bounded_mv.price, 'currencyCode':Varchar), 'value':Varchar), JsonbAccessStr(JsonbAccess(order_executions_bounded_mv.price, 'currency_code':Varchar), 'value':Varchar)) as $expr3, order_executions_bounded_mv.id, order_executions_bounded_mv.executed_at, order_executions_bounded_mv.orders.created_at] }
        ├── output: [ order_executions_bounded_mv.order_id, $expr1, $expr2, $expr3, order_executions_bounded_mv.id, order_executions_bounded_mv.executed_at, order_executions_bounded_mv.orders.created_at ]
        ├── stream key: [ order_executions_bounded_mv.order_id, order_executions_bounded_mv.id, order_executions_bounded_mv.executed_at, order_executions_bounded_mv.orders.created_at ]
        └── StreamProject { exprs: [order_executions_bounded_mv.order_id, order_executions_bounded_mv.quantity, order_executions_bounded_mv.price, order_executions_bounded_mv.quantity::Decimal as $expr1, order_executions_bounded_mv.id, order_executions_bounded_mv.executed_at, order_executions_bounded_mv.orders.created_at] } { output: [ order_executions_bounded_mv.order_id, order_executions_bounded_mv.quantity, order_executions_bounded_mv.price, $expr1, order_executions_bounded_mv.id, order_executions_bounded_mv.executed_at, order_executions_bounded_mv.orders.created_at ], stream key: [ order_executions_bounded_mv.order_id, order_executions_bounded_mv.id, order_executions_bounded_mv.executed_at, order_executions_bounded_mv.orders.created_at ] }
            └── StreamTableScan { table: order_executions_bounded_mv, columns: [order_id, quantity, price, id, executed_at, orders.created_at] } { output: [ order_executions_bounded_mv.order_id, order_executions_bounded_mv.quantity, order_executions_bounded_mv.price, order_executions_bounded_mv.id, order_executions_bounded_mv.executed_at, order_executions_bounded_mv.orders.created_at ], stream key: [ order_executions_bounded_mv.order_id, order_executions_bounded_mv.id, order_executions_bounded_mv.executed_at, order_executions_bounded_mv.orders.created_at ] }
                ├── Upstream { output: [ order_id, quantity, price, id, executed_at, orders.created_at ], stream key: [] }
                └── BatchPlanNode { output: [ order_id, quantity, price, id, executed_at, orders.created_at ], stream key: [] }

Fragment 52301 (Actor 737602,737603)
StreamLocalityProvider { locality_columns: [order_execution_fee_lines_mv.order_id] } { output: [ order_execution_fee_lines_mv.order_id, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.amount, order_execution_fee_lines_mv.currency_code ], stream key: [ order_execution_fee_lines_mv.order_id, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.currency_code ] }
└── MergeExecutor { output: [ order_execution_fee_lines_mv.order_id, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.amount, order_execution_fee_lines_mv.currency_code ], stream key: [ order_execution_fee_lines_mv.order_id, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.currency_code ] }

Fragment 52302 (Actor 737607,737606)
StreamTableScan { table: order_execution_fee_lines_mv, columns: [order_id, kind, amount, currency_code] } { output: [ order_execution_fee_lines_mv.order_id, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.amount, order_execution_fee_lines_mv.currency_code ], stream key: [ order_execution_fee_lines_mv.order_id, order_execution_fee_lines_mv.kind, order_execution_fee_lines_mv.currency_code ] }
├── Upstream { output: [ order_id, kind, amount, currency_code ], stream key: [] }
└── BatchPlanNode { output: [ order_id, kind, amount, currency_code ], stream key: [] }