Limiting the number of concurrent scans
The database server apportions some number of scans to a query according to its PDQ priority (among other factors). You can adjust the value of the DS_MAX_SCANS configuration parameter to limit the number of concurrent scans.
scan_threads = min (nfrags, (DS_MAX_SCANS * (pdqpriority / 100)
* (MAX_PDQPRIORITY / 100) )
- nfrags
- is the number of fragments in the table with the largest number of fragments.
- pdqpriority
- is the PDQ priority value set by either the PDQPRIORITY environment variable or the SET PDQPRIORITY statement.
For example, suppose a large table contains 100 fragments. With no limit on the number of concurrent scans allowed, the database server would concurrently execute 100 scan threads to read this table. In addition, many users could initiate this query.
As the database server administrator, you set the DS_MAX_SCANS
configuration parameter to a value lower than the number of fragments
in this table to prevent the database server from being flooded with
scan threads by multiple decision-support queries. You can set DS_MAX_SCANS
to 20
to ensure that the database server concurrently
executes a maximum of 20 scan threads for parallel scans. Furthermore,
if multiple users initiate parallel database queries, each query receives
only a percentage of the 20 scan threads, according to the PDQ priority
assigned to the query and the value for the MAX_PDQPRIORITY configuration
parameter that the database server administrator sets.