使用 DS_MAX_SCANS 配置参数来限定数据库服务器可并发执行的 PDQ 扫描线程的数目。
reserved_threads = min (nfrags, (DS_MAX_SCANS * PDQPRIORITY / 100 * MAX_PDQPRIORITY / 100) )
如果公式的 DS_MAX_SCANS 部分大于或等于要扫描的表中的分片数,则查询保持在就绪队列中,直到有表分片且可用的扫描线程一样多。一旦进行,查询快速地执行,因为线程在并行地扫描分片。
例如,如果 nfrags 等于 24,DS_MAX_SCANS 等于 90,PDQPRIORITY 等于 50, 且 MAX_PDQPRIORITY 等于 60,则查询不开始执行直到有 nfrags 个扫描线程可用。扫描并行发生。
如果 DS_MAX_SCANS 公式降到低于分片数,则查询会尽快开始执行,但由于线程串行地扫描分片,查询执行时间较长。
在前一个示例中,如果将 DS_MAX_SCANS 降低到 40,则查询需要较少的资源(12 个扫描线程)来开始执行,但每一个线程需要串行地扫描两个分片。执行耗时较长。