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

← cluster insights objects transactions_sink explain
Overview Objects Graph History
sink · insights.transactions_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
24 operators
Sink · insights.transactions_sink
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · LeftOuter · transactions_merged_mv_next.transaction_id = fee_transactio…
2 actors
HashJoin · LeftOuter · transactions_merged_mv_next.transaction_id = fee_transactio… 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 · fee_transactions_dm
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · LeftOuter · transactions_merged_mv_next.transaction_type_id = transacti…
2 actors
HashJoin · LeftOuter · transactions_merged_mv_next.transaction_type_id = transacti… 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 · transaction_types_dm
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · transactions_merged_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.transactions_sink Sink insights.transactions_s… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · LeftOuter · transactions_merged_mv_next.transaction_id = fee_transactio… SyncLogStore LeftOuter · transaction… — · 2 actors HashJoin · LeftOuter · transactions_merged_mv_next.transaction_id = fee_transactio… HashJoin LeftOuter · transaction… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · fee_transactions_dm StreamScan fee_transactions_dm idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · LeftOuter · transactions_merged_mv_next.transaction_type_id = transacti… SyncLogStore LeftOuter · transaction… — · 2 actors HashJoin · LeftOuter · transactions_merged_mv_next.transaction_type_id = transacti… HashJoin LeftOuter · transaction… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · transaction_types_dm StreamScan transaction_types_dm idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · transactions_merged_mv_next StreamScan transactions_merged_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 20589 (Actor 100479,100478)
StreamSink { type: upsert, columns: [transaction_id, account_id, asset_id, currency_code, net_value, transaction_valuation_date, transaction_settlement_date, transaction_type, fee_type, transactions_merged_mv_next.transactions_intraday_dm.transaction_id(hidden), transactions_merged_mv_next.transactions_intraday_dm.status_label_id(hidden), transactions_merged_mv_next.null:Varchar(hidden), transactions_merged_mv_next.null:Varchar#1(hidden), transactions_merged_mv_next.null:Varchar#2(hidden), transactions_merged_mv_next.null:Varchar#3(hidden), transactions_merged_mv_next.$src(hidden), transactions_merged_mv_next.transaction_type_id(hidden), fee_transactions_dm.transaction_id(hidden)], downstream_pk: [transactions_merged_mv_next.transaction_id] }
├── output:
│   ┌── transactions_merged_mv_next.transaction_id
│   ├── transactions_merged_mv_next.account_id
│   ├── transactions_merged_mv_next.asset_id
│   ├── transactions_merged_mv_next.currency_code
│   ├── transactions_merged_mv_next.net_value
│   ├── transactions_merged_mv_next.transaction_valuation_date
│   ├── transactions_merged_mv_next.transaction_settlement_date
│   ├── transaction_types_dm.type
│   ├── fee_transactions_dm.fee_type
│   ├── transactions_merged_mv_next.transactions_intraday_dm.transaction_id
│   ├── transactions_merged_mv_next.transactions_intraday_dm.status_label_id
│   ├── transactions_merged_mv_next.null:Varchar
│   ├── transactions_merged_mv_next.null:Varchar#1
│   ├── transactions_merged_mv_next.null:Varchar#2
│   ├── transactions_merged_mv_next.null:Varchar#3
│   ├── transactions_merged_mv_next.$src
│   ├── transactions_merged_mv_next.transaction_type_id
│   └── fee_transactions_dm.transaction_id
├── stream key: [ transactions_merged_mv_next.transactions_intraday_dm.transaction_id, transactions_merged_mv_next.transactions_intraday_dm.status_label_id, transactions_merged_mv_next.null:Varchar, transactions_merged_mv_next.null:Varchar#1, transactions_merged_mv_next.null:Varchar#2, transactions_merged_mv_next.null:Varchar#3, transactions_merged_mv_next.$src, transactions_merged_mv_next.transaction_type_id, transactions_merged_mv_next.transaction_id ]
└── MergeExecutor
    ├── output:
    │   ┌── transactions_merged_mv_next.transaction_id
    │   ├── transactions_merged_mv_next.account_id
    │   ├── transactions_merged_mv_next.asset_id
    │   ├── transactions_merged_mv_next.currency_code
    │   ├── transactions_merged_mv_next.net_value
    │   ├── transactions_merged_mv_next.transaction_valuation_date
    │   ├── transactions_merged_mv_next.transaction_settlement_date
    │   ├── transaction_types_dm.type
    │   ├── fee_transactions_dm.fee_type
    │   ├── transactions_merged_mv_next.transactions_intraday_dm.transaction_id
    │   ├── transactions_merged_mv_next.transactions_intraday_dm.status_label_id
    │   ├── transactions_merged_mv_next.null:Varchar
    │   ├── transactions_merged_mv_next.null:Varchar#1
    │   ├── transactions_merged_mv_next.null:Varchar#2
    │   ├── transactions_merged_mv_next.null:Varchar#3
    │   ├── transactions_merged_mv_next.$src
    │   ├── transactions_merged_mv_next.transaction_type_id
    │   └── fee_transactions_dm.transaction_id
    └── stream key: [ transactions_merged_mv_next.transactions_intraday_dm.transaction_id, transactions_merged_mv_next.transactions_intraday_dm.status_label_id, transactions_merged_mv_next.null:Varchar, transactions_merged_mv_next.null:Varchar#1, transactions_merged_mv_next.null:Varchar#2, transactions_merged_mv_next.null:Varchar#3, transactions_merged_mv_next.$src, transactions_merged_mv_next.transaction_type_id, transactions_merged_mv_next.transaction_id ]

Fragment 20590 (Actor 100477,100476)
StreamSyncLogStore
├── output:
│   ┌── transactions_merged_mv_next.transaction_id
│   ├── transactions_merged_mv_next.account_id
│   ├── transactions_merged_mv_next.asset_id
│   ├── transactions_merged_mv_next.currency_code
│   ├── transactions_merged_mv_next.net_value
│   ├── transactions_merged_mv_next.transaction_valuation_date
│   ├── transactions_merged_mv_next.transaction_settlement_date
│   ├── transaction_types_dm.type
│   ├── fee_transactions_dm.fee_type
│   ├── transactions_merged_mv_next.transactions_intraday_dm.transaction_id
│   ├── transactions_merged_mv_next.transactions_intraday_dm.status_label_id
│   ├── transactions_merged_mv_next.null:Varchar
│   ├── transactions_merged_mv_next.null:Varchar#1
│   ├── transactions_merged_mv_next.null:Varchar#2
│   ├── transactions_merged_mv_next.null:Varchar#3
│   ├── transactions_merged_mv_next.$src
│   ├── transactions_merged_mv_next.transaction_type_id
│   └── fee_transactions_dm.transaction_id
├── stream key: [ transactions_merged_mv_next.transactions_intraday_dm.transaction_id, transactions_merged_mv_next.transactions_intraday_dm.status_label_id, transactions_merged_mv_next.null:Varchar, transactions_merged_mv_next.null:Varchar#1, transactions_merged_mv_next.null:Varchar#2, transactions_merged_mv_next.null:Varchar#3, transactions_merged_mv_next.$src, transactions_merged_mv_next.transaction_type_id, transactions_merged_mv_next.transaction_id ]
└── StreamHashJoin { type: LeftOuter, predicate: transactions_merged_mv_next.transaction_id = fee_transactions_dm.transaction_id }
    ├── output:
    │   ┌── transactions_merged_mv_next.transaction_id
    │   ├── transactions_merged_mv_next.account_id
    │   ├── transactions_merged_mv_next.asset_id
    │   ├── transactions_merged_mv_next.currency_code
    │   ├── transactions_merged_mv_next.net_value
    │   ├── transactions_merged_mv_next.transaction_valuation_date
    │   ├── transactions_merged_mv_next.transaction_settlement_date
    │   ├── transaction_types_dm.type
    │   ├── fee_transactions_dm.fee_type
    │   ├── transactions_merged_mv_next.transactions_intraday_dm.transaction_id
    │   ├── transactions_merged_mv_next.transactions_intraday_dm.status_label_id
    │   ├── transactions_merged_mv_next.null:Varchar
    │   ├── transactions_merged_mv_next.null:Varchar#1
    │   ├── transactions_merged_mv_next.null:Varchar#2
    │   ├── transactions_merged_mv_next.null:Varchar#3
    │   ├── transactions_merged_mv_next.$src
    │   ├── transactions_merged_mv_next.transaction_type_id
    │   └── fee_transactions_dm.transaction_id
    ├── stream key: [ transactions_merged_mv_next.transactions_intraday_dm.transaction_id, transactions_merged_mv_next.transactions_intraday_dm.status_label_id, transactions_merged_mv_next.null:Varchar, transactions_merged_mv_next.null:Varchar#1, transactions_merged_mv_next.null:Varchar#2, transactions_merged_mv_next.null:Varchar#3, transactions_merged_mv_next.$src, transactions_merged_mv_next.transaction_type_id, transactions_merged_mv_next.transaction_id ]
    ├── MergeExecutor
    │   ├── output:
    │   │   ┌── transactions_merged_mv_next.transaction_id
    │   │   ├── transactions_merged_mv_next.account_id
    │   │   ├── transactions_merged_mv_next.asset_id
    │   │   ├── transactions_merged_mv_next.transaction_valuation_date
    │   │   ├── transactions_merged_mv_next.transaction_settlement_date
    │   │   ├── transactions_merged_mv_next.currency_code
    │   │   ├── transactions_merged_mv_next.net_value
    │   │   ├── transaction_types_dm.type
    │   │   ├── transactions_merged_mv_next.transactions_intraday_dm.transaction_id
    │   │   ├── transactions_merged_mv_next.transactions_intraday_dm.status_label_id
    │   │   ├── transactions_merged_mv_next.null:Varchar
    │   │   ├── transactions_merged_mv_next.null:Varchar#1
    │   │   ├── transactions_merged_mv_next.null:Varchar#2
    │   │   ├── transactions_merged_mv_next.null:Varchar#3
    │   │   ├── transactions_merged_mv_next.$src
    │   │   ├── transactions_merged_mv_next.transaction_type_id
    │   │   └── transaction_types_dm.transaction_type_id
    │   └── stream key: [ transactions_merged_mv_next.transactions_intraday_dm.transaction_id, transactions_merged_mv_next.transactions_intraday_dm.status_label_id, transactions_merged_mv_next.null:Varchar, transactions_merged_mv_next.null:Varchar#1, transactions_merged_mv_next.null:Varchar#2, transactions_merged_mv_next.null:Varchar#3, transactions_merged_mv_next.$src, transactions_merged_mv_next.transaction_type_id ]
    └── MergeExecutor { output: [ fee_transactions_dm.transaction_id, fee_transactions_dm.fee_type ], stream key: [ fee_transactions_dm.transaction_id ] }

Fragment 20591 (Actor 100481,100480)
StreamSyncLogStore
├── output:
│   ┌── transactions_merged_mv_next.transaction_id
│   ├── transactions_merged_mv_next.account_id
│   ├── transactions_merged_mv_next.asset_id
│   ├── transactions_merged_mv_next.transaction_valuation_date
│   ├── transactions_merged_mv_next.transaction_settlement_date
│   ├── transactions_merged_mv_next.currency_code
│   ├── transactions_merged_mv_next.net_value
│   ├── transaction_types_dm.type
│   ├── transactions_merged_mv_next.transactions_intraday_dm.transaction_id
│   ├── transactions_merged_mv_next.transactions_intraday_dm.status_label_id
│   ├── transactions_merged_mv_next.null:Varchar
│   ├── transactions_merged_mv_next.null:Varchar#1
│   ├── transactions_merged_mv_next.null:Varchar#2
│   ├── transactions_merged_mv_next.null:Varchar#3
│   ├── transactions_merged_mv_next.$src
│   ├── transactions_merged_mv_next.transaction_type_id
│   └── transaction_types_dm.transaction_type_id
├── stream key: [ transactions_merged_mv_next.transactions_intraday_dm.transaction_id, transactions_merged_mv_next.transactions_intraday_dm.status_label_id, transactions_merged_mv_next.null:Varchar, transactions_merged_mv_next.null:Varchar#1, transactions_merged_mv_next.null:Varchar#2, transactions_merged_mv_next.null:Varchar#3, transactions_merged_mv_next.$src, transactions_merged_mv_next.transaction_type_id ]
└── StreamHashJoin { type: LeftOuter, predicate: transactions_merged_mv_next.transaction_type_id = transaction_types_dm.transaction_type_id }
    ├── output:
    │   ┌── transactions_merged_mv_next.transaction_id
    │   ├── transactions_merged_mv_next.account_id
    │   ├── transactions_merged_mv_next.asset_id
    │   ├── transactions_merged_mv_next.transaction_valuation_date
    │   ├── transactions_merged_mv_next.transaction_settlement_date
    │   ├── transactions_merged_mv_next.currency_code
    │   ├── transactions_merged_mv_next.net_value
    │   ├── transaction_types_dm.type
    │   ├── transactions_merged_mv_next.transactions_intraday_dm.transaction_id
    │   ├── transactions_merged_mv_next.transactions_intraday_dm.status_label_id
    │   ├── transactions_merged_mv_next.null:Varchar
    │   ├── transactions_merged_mv_next.null:Varchar#1
    │   ├── transactions_merged_mv_next.null:Varchar#2
    │   ├── transactions_merged_mv_next.null:Varchar#3
    │   ├── transactions_merged_mv_next.$src
    │   ├── transactions_merged_mv_next.transaction_type_id
    │   └── transaction_types_dm.transaction_type_id
    ├── stream key: [ transactions_merged_mv_next.transactions_intraday_dm.transaction_id, transactions_merged_mv_next.transactions_intraday_dm.status_label_id, transactions_merged_mv_next.null:Varchar, transactions_merged_mv_next.null:Varchar#1, transactions_merged_mv_next.null:Varchar#2, transactions_merged_mv_next.null:Varchar#3, transactions_merged_mv_next.$src, transactions_merged_mv_next.transaction_type_id ]
    ├── MergeExecutor
    │   ├── output: [ transactions_merged_mv_next.transaction_id, transactions_merged_mv_next.account_id, transactions_merged_mv_next.asset_id, transactions_merged_mv_next.transaction_valuation_date, transactions_merged_mv_next.transaction_settlement_date, transactions_merged_mv_next.transaction_type_id, transactions_merged_mv_next.currency_code, transactions_merged_mv_next.net_value, transactions_merged_mv_next.transactions_intraday_dm.transaction_id, transactions_merged_mv_next.transactions_intraday_dm.status_label_id, transactions_merged_mv_next.null:Varchar, transactions_merged_mv_next.null:Varchar#1, transactions_merged_mv_next.null:Varchar#2, transactions_merged_mv_next.null:Varchar#3, transactions_merged_mv_next.$src ]
    │   └── stream key: [ transactions_merged_mv_next.transactions_intraday_dm.transaction_id, transactions_merged_mv_next.transactions_intraday_dm.status_label_id, transactions_merged_mv_next.null:Varchar, transactions_merged_mv_next.null:Varchar#1, transactions_merged_mv_next.null:Varchar#2, transactions_merged_mv_next.null:Varchar#3, transactions_merged_mv_next.$src ]
    └── MergeExecutor { output: [ transaction_types_dm.transaction_type_id, transaction_types_dm.type ], stream key: [ transaction_types_dm.transaction_type_id ] }

Fragment 20592 (Actor 100487,100486)
StreamTableScan { table: transactions_merged_mv_next, columns: [transaction_id, account_id, asset_id, transaction_valuation_date, transaction_settlement_date, transaction_type_id, currency_code, net_value, transactions_intraday_dm.transaction_id, transactions_intraday_dm.status_label_id, null:Varchar, null:Varchar#1, null:Varchar#2, null:Varchar#3, $src] }
├── output: [ transactions_merged_mv_next.transaction_id, transactions_merged_mv_next.account_id, transactions_merged_mv_next.asset_id, transactions_merged_mv_next.transaction_valuation_date, transactions_merged_mv_next.transaction_settlement_date, transactions_merged_mv_next.transaction_type_id, transactions_merged_mv_next.currency_code, transactions_merged_mv_next.net_value, transactions_merged_mv_next.transactions_intraday_dm.transaction_id, transactions_merged_mv_next.transactions_intraday_dm.status_label_id, transactions_merged_mv_next.null:Varchar, transactions_merged_mv_next.null:Varchar#1, transactions_merged_mv_next.null:Varchar#2, transactions_merged_mv_next.null:Varchar#3, transactions_merged_mv_next.$src ]
├── stream key: [ transactions_merged_mv_next.transactions_intraday_dm.transaction_id, transactions_merged_mv_next.transactions_intraday_dm.status_label_id, transactions_merged_mv_next.null:Varchar, transactions_merged_mv_next.null:Varchar#1, transactions_merged_mv_next.null:Varchar#2, transactions_merged_mv_next.null:Varchar#3, transactions_merged_mv_next.$src ]
├── Upstream { output: [ transaction_id, account_id, asset_id, transaction_valuation_date, transaction_settlement_date, transaction_type_id, currency_code, net_value, transactions_intraday_dm.transaction_id, transactions_intraday_dm.status_label_id, null:Varchar, null:Varchar#1, null:Varchar#2, null:Varchar#3, $src ], stream key: [] }
└── BatchPlanNode { output: [ transaction_id, account_id, asset_id, transaction_valuation_date, transaction_settlement_date, transaction_type_id, currency_code, net_value, transactions_intraday_dm.transaction_id, transactions_intraday_dm.status_label_id, null:Varchar, null:Varchar#1, null:Varchar#2, null:Varchar#3, $src ], stream key: [] }

Fragment 20593 (Actor 100489,100488)
StreamTableScan { table: transaction_types_dm, columns: [transaction_type_id, type] } { output: [ transaction_types_dm.transaction_type_id, transaction_types_dm.type ], stream key: [ transaction_types_dm.transaction_type_id ] }
├── Upstream { output: [ transaction_type_id, type ], stream key: [] }
└── BatchPlanNode { output: [ transaction_type_id, type ], stream key: [] }

Fragment 20594 (Actor 100491,100490)
StreamTableScan { table: fee_transactions_dm, columns: [transaction_id, fee_type] } { output: [ fee_transactions_dm.transaction_id, fee_transactions_dm.fee_type ], stream key: [ fee_transactions_dm.transaction_id ] }
├── Upstream { output: [ transaction_id, fee_type ], stream key: [] }
└── BatchPlanNode { output: [ transaction_id, fee_type ], stream key: [] }