限制可并行运行的 PDQ 扫描线程的数量

DS_MAX_SCANS 配置参数限制可同时运行的 PDQ 扫描线程的数目。该配置参数防止数据库服务器被多个决策支持查询的扫描线程淹没。

要计算分配给查询的扫描线程数,请使用以下公式:
scan_threads  =                 min (nfrags, (DS_MAX_SCANS * pdqpriority / 100 
      * MAX_PDQPRIORITY / 100) )
nfrags
是具有最多分段数的表中的分段数。
pdqpriority
是由 PDQPRIORITY 环境变量或 SQL 语句 SET PDQPRIORITY 设置的 PDQ 优先级值。

减少扫描线程的数目可以缩短大型查询在就绪的队列中等待的时间,尤其是当同时提交许多大型查询的时候。但是,如果扫描线程数小于 nfrags,那么查询一旦开始,就会花费较长时间。

例如:如果查询需要扫描一个表中的 20 个分段,但是 scan_threads 公式使该查询在仅有 10 个扫描线程时就开始,每个扫描线程按顺序扫描两个分段。查询执行需要的时间将是使用 20 个扫描线程需要的时间的两倍。