Guides
Parallelism (Multi-Core Processing)
#### The Effect of Row Groups on Parallelism {#docs:guides:performance:how_to_tune_workloads::the-effect-of-row-groups-on-parallelism}  
DuckDB parallelizes the workload based on _[row groups](#docs:internals:storage::row-groups),_ i.e., groups of rows that are stored together at the storage level.
A row group in DuckDB's database format consists of max. 122,880 rows.
Parallelism starts at the level of row groups, therefore, for a query to run on _k_ threads, it needs to scan at least _k_ * 122,880 rows.  
#### Too Many Threads {#docs:guides:performance:how_to_tune_workloads::too-many-threads}  
Note that in certain cases DuckDB may launch _too many threads_ (e.g., due to HyperThreading), which can lead to slowdowns. In these cases, it’s worth manually limiting the number of threads using [`SET threads = X`](#docs:configuration:pragmas::threads).