Streaming Parallelism
Streaming parallelism is configured by two kinds of session parameters:
streaming_parallelismstreaming_parallelism_for_<type>
Supported <type> values in this document:
tablematerialized_viewindexsourcesink
Value Semantics
The unified parallelism value accepts the following forms:
0adaptivedefault<n>bounded(<n>)ratio(<r>)
The meaning is:
0andadaptivemean adaptive scheduling with the full worker set.<n>means fixed parallelism.bounded(<n>)means adaptive scheduling with an upper bound.ratio(<r>)means adaptive scheduling with a ratio of the available worker parallelism.
The stored default value for all unified parameters is default.
The effective defaults preserve the legacy behavior:
streaming_parallelism = default, which resolves tobounded(64)streaming_parallelism_for_table = default, which resolves tobounded(4)only whenstreaming_parallelismis alsodefaultstreaming_parallelism_for_source = default, which resolves tobounded(4)only whenstreaming_parallelismis alsodefault- all other
streaming_parallelism_for_<type>values default todefaultand followstreaming_parallelism
For these parameters, SET ... = DEFAULT and SET ... = 'default' both restore the stored
default value, so SHOW output remains round-trippable.
Resolution Rules
Resolution happens in a single step:
- Resolve
streaming_parallelism.defaultresolves to the legacy global defaultbounded(64).
- Resolve
streaming_parallelism_for_<type>.- For
tableandsource,defaultresolves to the legacy type-specific defaultbounded(4)only whenstreaming_parallelismis stilldefault; otherwise it follows the resolved global value. - For other job types,
defaultfalls back to the resolved global value.
- For
- Convert the resolved value into:
- a fixed parallelism, or
- an adaptive strategy stored in the streaming job metadata.
This means the frontend always writes the final adaptive strategy into the job context, and meta no longer depends on a separate system-wide adaptive strategy parameter.
Examples
SET streaming_parallelism = adaptive;
SET streaming_parallelism = 8;
SET streaming_parallelism = 'bounded(16)';
SET streaming_parallelism = 'ratio(0.5)';
SET streaming_parallelism = 'ratio(0.5)';
SET streaming_parallelism_for_materialized_view = 'bounded(4)';
SET streaming_parallelism_for_materialized_view = DEFAULT;
Migration
The deprecated parameters fall into two groups:
-
adaptive_parallelism_strategyThis parameter existed in official releases and was the old cluster-wide knob for adaptive scheduling. Users could previously set it through
ALTER SYSTEMor config files to choose howadaptiveshould expand by default, for exampleAUTO,BOUNDED(n), orRATIO(r).This is no longer supported as a separate user-facing setting. After the migration, users must express the final policy directly with
streaming_parallelismandstreaming_parallelism_for_<type>, such asadaptive,bounded(64), orratio(0.5). There is no longer a separate “adaptive strategy default” to configure. -
streaming_parallelism_strategyandstreaming_parallelism_strategy_for_<type>These parameters only existed in Nightly builds between v2.8.0 and v3.0.0, so this part of the migration is not a breaking change for official releases. It still matters for Nightly users because their stored values are migrated to the unified parameters.
These parameters were also separate strategy-only knobs: users could combine
streaming_parallelism = adaptivewith a matchingstreaming_parallelism_strategy = ..., or do the same per job type. This split representation is no longer supported. After the migration, users set only the unifiedstreaming_parallelism*parameters, and each value already carries its own strategy.
On startup, meta derives the final streaming_parallelism and
streaming_parallelism_for_<type> values once from the legacy parameters, persists the new values,
and drops the deprecated entries. For adaptive_parallelism_strategy, if the legacy system
parameter is missing, the migration interprets it using the released legacy default AUTO.
Existing jobs without a stored job-level strategy are materialized as AUTO to preserve their
released behavior, while untouched sessions on the new runtime still resolve the unified defaults
(streaming_parallelism = default to bounded(64), table/source default to bounded(4)). New
clusters only expose the unified parameters.
In other words, an upgraded user may still observe the same effective parallelism for existing jobs
or migrated session defaults, but they can no longer keep adjusting that behavior through the old
*_strategy parameters. Any further changes must use the unified streaming_parallelism*
parameters.