标识 SET EXPLAIN 输出中的并行扫描

打开 PDQ 时,SET EXPLAIN 输出显示优化器是否选择了并行扫描。如果优化器选择了并行扫描,那么输出将列出 Parallel。(如果关闭了 PDQ,那么输出将列出 Serial。)

如果打开 PDQ,那么优化器还会指示响应查询所需的最大线程数。SET EXPLAIN 输出中的 # of Secondary Threads 字段指示除了用户会话线程之外所需的线程数。必需的线程总数为辅助线程数加上 1。

以下示例显示了一个表的 SET EXPLAIN 输出,该表采用分段存储并将 PDQ 优先级设置为 LOW
SELECT * FROM t1 WHERE c1 > 20

Estimated Cost: 2
Estimated # of Rows Returned: 2

1) gbasedbt.t1: SEQUENTIAL SCAN (Parallel, fragments: 2)

  Filters: gbasedbt.t1.c1 > 20

# of Secondary Threads = 1
以下 SET EXPLAIN 部分输出示例显示了一个查询,该查询在两个分段表之间具有散列连接,并且将 PDQ 优先级设置为 ON。该查询使用 DYNAMIC HASH JOIN 标记,且建立散列的表使用 Build Outer 进行标记。
QUERY:
------
SELECT h1.c1, h2.c1 FROM h1, h2 WHERE h1.c1 = h2.c1

Estimated Cost: 2
Estimated # of Rows Returned: 5

1) gbasedbt.h1: SEQUENTIAL SCAN (Parallel, fragments: ALL)

2) gbasedbt.h2: SEQUENTIAL SCAN (Parallel, fragments: ALL)


DYNAMIC HASH JOIN (Build Outer)
  Dynamic Hash Filters: gbasedbt.h1.c1 = gbasedbt.h2.c1

# of Secondary Threads = 6
以下 SET EXPLAIN 部分输出的示例显示了具有分段存储的表,其 PDQ 优先级设置为 LOW,并且还显示了已选为存取计划的索引:
SELECT * FROM t1 WHERE c1 < 13

Estimated Cost: 2
Estimated # of Rows Returned: 1

1) gbasedbt.t1: INDEX PATH

  (1) Index Keys: c1 (Parallel, fragments: ALL)
  Upper Index Filter: gbasedbt.t1.c1 < 13


# of Secondary Threads = 3